Не могу понять что было высстановленно в компиляторе что дало такой код (программа разбита на 186 сегментов): Код (Text): mov ax, seg seg141 push ax mov ax, 0A2h ; 'в' push ax ; path call _unlink_0 pop cx pop cx У меня дает: Код (Text): push path ; path call _unlink pop cx ну и естественно у него в unlink path = dword ptr 6 у меня path = word ptr 4 ЗЫ, программа имеет только MZ заголовок но умеет обращаться с WinClipboard. Какие опции были выставленны в компиляторе ?
Shooshpanchik Скорее всего модель памяти во втором коде small, в во втором, large. MZ заголовок но умеет обращаться с WinClipboard Из dos v3+ приложений можно общаться с буфером обмена windows при помощи INT 2fH 17xxH: Windows Clipboard Functions Какой компилятор?
Уверен что это Borland C++ (это написанно в бинарнике) Предположительно 3.1 , выдающая функцию start один в один. С моделью памяти прояснилось, просто реверснутый кусочек еще слишком маленький. Удивило вот это: Код (Text): xor ax, ax push ax xor ax, ax push ax xor ax, ax push ax call far ptr unk_453DD; после анализа дало "call sub_453DD" add sp, 6 Как я ни выставлял оптимизацию все равно получаю Код (Text): push large 0 push 0 call sub_10308 add sp, 6
Shooshpanchik Может быть в проект для bc++v3.1 добавили объектные модули (или библиотеку) сделанные(ную) другим компилятором (не обязательно Си). Я когда-то давно (во времена dos) по прологу/эпилогу подпрограмм отличал BorlandC/MicroSoftC/SymantecC.
Я специально проверил, поставил Borland Turbo C 3.0 и о чудо, xor ax, ax/push ax дает именно он, хотя в бинарнике присутсвует надпись "Borland C++" и код у точки входа практически такой же...