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

[вопрос] уменьшение размера ехе в visual studio

versal

floppy-диск
Забанен
Регистрация
02.05.2020
Сообщения
2
Реакции
0
Пожалуйста, обратите внимание, что пользователь заблокирован
Доброго времени суток. Ситуация следующая: пробую написать простейшую программу, которая использует стандартные библиотеки с++:
#include<windows.h>
#include<fstream>
#include<string>
#include<Tchar.h>

При компиляции выбираю:
RG4ff.jpg
и немного недоволен, что получившийся размер программы чуть больше мегабайта. В связи с этим вопрос, какие есть методы уменьшения веса бинарника?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если вы пишете с CRT, то не так уж много; разве что линковать с более старой версией CRT.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если вы пишете с CRT, то не так уж много; разве что линковать с более старой версией CRT.
Понял, спасибо. но каким же образом у местных продавцов получается делать малварь не более 150-300кб на выходе? неужели никто не использует винапи или как?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
у местных продавцов получается делать малварь не более 150-300кб на выходе? неужели никто не использует винапи или как?
причем тут винапи. Не используют CRT, стандартную библиотеку Си. Без нее можно и 2кб файл сделать, и полно мануалов как.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
versal https://xss.pro/threads/65051/post-445031 вот тут немного писал, пробуй, будут вопросы, пиши в топике.
 
Такой размер даёт скорей всего отладочная информация.
Начните с того, что переключитесь в профиль Release.
Далее найдите все опции отладочной инфы (их две, в С/С++ и Компоновке), выключите всё.
Поотключайте защитные проверки; включите оптимизацию всей программы, поиграйтесь с ключами оптимизации. Попробуйте отключить frame pointer.
Всё это снизит размер бинаря до сотен килобайт.

Дальнейшая оптимизация - это отказ от библиотек и замена собственными (или цельнотянутыми) легковесными реализациями. Своя замена STL и так далее.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Эра маленьких бинарников в малваре давно прошла. Можешь закинуть свой хеловорлд на вирустотал с crt и без и сравнить результаты.
 
Еще можно сэкономить на выравнивании, склеив секции:
C:
#pragma once
#define WIN32_LEAN_AND_MEAN
#pragma comment(linker, "/merge:.rdata=.text")
#pragma comment(linker, "/merge:.edata=.text")
#pragma comment(linker, "/merge:.data=.text")
#pragma comment(linker, "/merge:.CRT=.text")
 
Для уменьшения размера разделяйте код на небольшие файлы.

MS линкер при сборке либо включает obj-файл целиком, либо целиком отбрасывает, потому если у вас большой файл, в котором используется только одна функция, то весь остальной код этого файла будет включен в итоговый EXE зря.
 


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