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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
При компиляции программы, фактически состоящей лишь из одного вызова функции 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-2023 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach