информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Сетевые кракеры и правда о деле ЛевинаПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Воспользуйся ASPack'om 16.01.05 18:23  Число просмотров: 5052
Автор: Криворукий ламер Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> При компиляции программы, фактически состоящей лишь из
> одного вызова функции MessageBox, получается исполняемый
> файл размером 30 Кб. Как уменьшить его размер?
> :-) http://www.bugtraq.ru/cgi-bin/iforum.mcgi?type=si&u=94
>
>
> Такой размер файл имеет потому, что в него включается код
> стандартной библиотеки времени выполнения языка C/С++
> (Standard C/С++ Run-Time Library, далее – RTL).

> Если стандартная библиотека C/C++ Вам не нужна, и Вы
> целиком напишите программу на Windows API, то можно
> отключить RTL. Для этого на вкладке Link в окне Project
> Settings (для компилятора Visual C++) необходимо:

> Включить опцию Ignore all default libraries (можно также
> использовать ключ /NOD или /NODEFAULTLIB в командной строке
> линкера).

> После этого в программе нельзя будет пользоваться функциями
> библиотеки C/C++ (printf, strcpy, malloc и т.д.), а следует
> использовать только Windows API.
Указать линкеру главную
> функцию программы в поле Entry Point Symbol (или
> использовать ключ линкера /ENTRY)
Заметим, что, в отличие
> от привычных...
Воспользуйся ASPack'ом
<site updates>
При компиляции программы, фактически состоящей лишь из одного вызова функции MessageBox, получается исполняемый файл размером 30 Кб. Как уменьшить его размер? 25.12.03 14:27  
Publisher: dl <Dmitry Leonov>
<"чистая" ссылка>
При компиляции программы, фактически состоящей лишь из одного вызова функции MessageBox, получается исполняемый файл размером 30 Кб. Как уменьшить его размер?
:-) http://www.bugtraq.ru/cgi-bin/iforum.mcgi?type=si&u=94

Такой размер файл имеет потому, что в него включается код стандартной библиотеки времени выполнения языка C/С++ (Standard C/С++ Run-Time Library, далее – RTL).
Если стандартная библиотека C/C++ Вам не нужна, и Вы целиком напишите программу на Windows API, то можно отключить RTL. Для этого на вкладке Link в окне Project Settings (для компилятора Visual C++) необходимо: Включить опцию Ignore all default libraries (можно также использовать ключ /NOD или /NODEFAULTLIB в командной строке линкера).
После этого в программе нельзя будет пользоваться функциями библиотеки C/C++ (printf, strcpy, malloc и т.д.), а следует использовать только Windows API. Указать линкеру главную функцию программы в поле Entry Point Symbol (или использовать ключ линкера /ENTRY) Заметим, что, в отличие от привычных...

Полный текст
Выходить по ExitProcess? 13.01.06 08:44  
Автор: Zart Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я видел подобный совет в другом месте, только там ещё говорили выходить из программы по ExitProcess. Я не знаю точно почему, но на всякий случай...

Кто тут крутой системщик, что происходит, когда исполняется return(1) ?
Нет не надо 13.01.06 12:48  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я видел подобный совет в другом месте, только там ещё
> говорили выходить из программы по ExitProcess. Я не знаю
> точно почему, но на всякий случай...

Не надо.

> Кто тут крутой системщик, что происходит, когда исполняется
> return(1) ?

Ничего страшного не происходит. Программа возвращается в kernel32!BaseProcessStart, и там вызывается ExitThread

После завершения последнего потока вызывается ExitProcess

ЗЫ: Да, кстати, на всякий случай напомню, что есть еще два FAQ-а, посвященных уменьшению размера:

http://bugtraq.ru/forum/faq/programming/small2.html
http://bugtraq.ru/forum/faq/programming/small3.html
Воспользуйся ASPack'om 16.01.05 18:23  
Автор: Криворукий ламер Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> При компиляции программы, фактически состоящей лишь из
> одного вызова функции MessageBox, получается исполняемый
> файл размером 30 Кб. Как уменьшить его размер?
> :-) http://www.bugtraq.ru/cgi-bin/iforum.mcgi?type=si&u=94
>
>
> Такой размер файл имеет потому, что в него включается код
> стандартной библиотеки времени выполнения языка C/С++
> (Standard C/С++ Run-Time Library, далее – RTL).

> Если стандартная библиотека C/C++ Вам не нужна, и Вы
> целиком напишите программу на Windows API, то можно
> отключить RTL. Для этого на вкладке Link в окне Project
> Settings (для компилятора Visual C++) необходимо:

> Включить опцию Ignore all default libraries (можно также
> использовать ключ /NOD или /NODEFAULTLIB в командной строке
> линкера).

> После этого в программе нельзя будет пользоваться функциями
> библиотеки C/C++ (printf, strcpy, malloc и т.д.), а следует
> использовать только Windows API.
Указать линкеру главную
> функцию программы в поле Entry Point Symbol (или
> использовать ключ линкера /ENTRY)
Заметим, что, в отличие
> от привычных...
Воспользуйся ASPack'ом
ASPack отстой 16.01.05 19:05  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Он увеличивает размер проги в памяти и зачастую увеличивает время запуска проги. Предлагаемый же способ уменьшает все - и размер на диске (что в принципе фигня) и размер в памяти (за счет исключения выделения памяти под нужды RTL) и скорость загрузки (за счет исключения инициализации RTL). Юзать это конечно надо только тогда когда это имеет смысл. В моей практике такое бывало не раз.
Да и вообще ASPack не по нашему). Честно говоря не очень понимаю какой с него толк кроме легкой защиты от взлома. А размер инсталляционного пакета проги с ехешником запакованным аспаком больше чем размер того же пакета, но с простым ехешником (это в случае нормальной инсталляшки которая сама умеет хорошо жать, самопальные склеивалки всего в один файл не в счет) .
Да. И еще в случае с dll-ками 17.01.05 12:21  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Описанный метод позволит разным процессам разделять память под ней, внешние же упаковщики за счет CoW будут отжирать память в каждом процессе, который использует эту длл-ку.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach