in name of zero INOZ, issue #1, 20 nov. 2001 Удаление RTL в программах на BC++ 5 by BKNY0NNX // SBVC Что такое RTL? RTL - Run-Time Library - это библиотека ЯВУ, которая всегда с вами ;) В ней содержатся все стандартные (и нестандартные;)) функции и процедуры языка. И эта библиотека находится в каждой скомпилированной программе, что не всегда полезно. Например, написали вы программу, которая не вызывает стандартных процедур, сама маленькая, а код - 100K ! Необходимо как-то отрезать RTL, что я рассмотрю на примере Borland C++ 5.00 for Win32 Command Line. Создал я прогу-пустышку, скомпилировал и посмотрел на то, что и как получилось. Оказалось, что компонуется какая-то библиотека "C0X32.OBJ". Нашёл её и дизассемблировал. Ничего интересного в ней нет :) Необходим её аналог, который только вызывает внешнюю процедуру "_main", а затем отдаёт управление системе. Вот тот код, который нужен: =====[CUT HERE]===== .386 .model flat, stdcall locals jumps extrn _main : proc extrn ExitProcess : proc .code Start: call _main call ExitProcess, 0 end Start =====[END CUT]====== Скомпильте его и засуньте вместо "C0X32.OBJ". Кстати, "пустой" "C0X32.OBJ" ничего не даст :( Затем я снова скомпилил пустышку. И - о чудо - в ней всё равно остался код, хотя его никто не вызывает ... В нём были текстовые строки, которые я поискал в библиотеках. Ента библиотека "CW32.LIB". А вот для них создадим пустышки командой TLIB ИмяБиблиотеки.LIB Осталось только заменить оригинальные копии обджа и либов на наши, не забыв сделать резервные копии оригиналов. Да, недостатки после этого: вы не сможете использовать стандартные процедуры :( Но нужны они вам ?! :) Всё, о чём шла речь, прилагается [/other/files/other01.rar] 13.11.2001