• XSS.stack #1 – первый литературный журнал от юзеров форума

Как через gcc(g++) компилировать такой же маленький вес как из под VS?

Alexey18

(L3) cache
Пользователь
Регистрация
11.06.2023
Сообщения
163
Реакции
30
Как через gcc(g++) компилировать такой же маленький вес как из под компилятора Visual Studio? В интернете ни нашел годной инфы, ну что это было 49 стало 47 килобайтов. (Код из под вижуалки 20кб ). Кто сталкивался, подскажите плс?
 
Нуу вот пример

Код:
#include <Windows.h>

#define HELLO_MSG L"Hello dear "

extern "C" int _start()
{
    return wWinMain(NULL,NULL,NULL,0);
}

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
    DWORD dwNameSize = 0;
   
    GetUserNameW(NULL,&dwNameSize);
   
    if(GetLastError() != ERROR_INSUFFICIENT_BUFFER){
        ExitProcess (-1);
    }
   
    LPWSTR lpwszHello = (LPWSTR)LocalAlloc(0,dwNameSize * 2 + 2 + sizeof(HELLO_MSG));
   
    lstrcpyW(lpwszHello,HELLO_MSG);
   
    if(GetUserNameW(lpwszHello + lstrlenW(HELLO_MSG),&dwNameSize))
        MessageBoxW(0,lpwszHello,L"From World",MB_ICONINFORMATION | MB_OK);
   
    LocalFree(lpwszHello);
   
    ExitProcess(0);
   
    return 0;
   
}

Компилируя так: gcc test.cpp -municode -Wl,-subsystem,windows -o test.exe test.exe = 139kb
Убираем црт и тд: gcc test.cpp -nodefaultlibs -nostartfiles -Wl,-subsystem,windows -e_start -lkernel32 -luser32 -ladvapi32 -o test_nocrt.exe test_nocrt.exe=9kb
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Убираем црт и тд: gcc test.cpp -nodefaultlibs -nostartfiles -Wl,-subsystem,windows -e_start -lkernel32 -luser32 -ladvapi32 -o test_nocrt.exe test_nocrt.exe=9kb
-s - обрезать дебажную инфу, -fno-exceptions и -fno-rtti - чтобы использовать фичи плюсов без тех, что требуют рантайма, -fno-ident - чтобы убрать ident строку с версией компилятора, если такая есть, -flto - чтобы включить link-time оптимизации типа удаления неиспользуемых функций, -Os - оптимизировать код для уменьшения его размера.
 
-s - обрезать дебажную инфу, -fno-exceptions и -fno-rtti - чтобы использовать фичи плюсов без тех, что требуют рантайма, -fno-ident - чтобы убрать ident строку с версией компилятора, если такая есть, -flto - чтобы включить link-time оптимизации типа удаления неиспользуемых функций, -Os - оптимизировать код для уменьшения его размера.
Спс ребята
 
Нуу вот пример

Код:
#include <Windows.h>

#define HELLO_MSG L"Hello dear "

extern "C" int _start()
{
    return wWinMain(NULL,NULL,NULL,0);
}

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
    DWORD dwNameSize = 0;
  
    GetUserNameW(NULL,&dwNameSize);
  
    if(GetLastError() != ERROR_INSUFFICIENT_BUFFER){
        ExitProcess (-1);
    }
  
    LPWSTR lpwszHello = (LPWSTR)LocalAlloc(0,dwNameSize * 2 + 2 + sizeof(HELLO_MSG));
  
    lstrcpyW(lpwszHello,HELLO_MSG);
  
    if(GetUserNameW(lpwszHello + lstrlenW(HELLO_MSG),&dwNameSize))
        MessageBoxW(0,lpwszHello,L"From World",MB_ICONINFORMATION | MB_OK);
  
    LocalFree(lpwszHello);
  
    ExitProcess(0);
  
    return 0;
  
}

Компилируя так: gcc test.cpp -municode -Wl,-subsystem,windows -o test.exe test.exe = 139kb
Убираем црт и тд: gcc test.cpp -nodefaultlibs -nostartfiles -Wl,-subsystem,windows -e_start -lkernel32 -luser32 -ladvapi32 -o test_nocrt.exe test_nocrt.exe=9kb
Еще можно /01(Приоретет размера) /Os (Отдавать Приоретет размеру)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
а ничего, что билды с оптимизациями никто в здравом уме не отлаживает?))) Кроме целей реверса
Без разницы, билд с оптимизацией или без, вообще пох что отлаживать если у тебя на руках дебаг информация
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх