В общем решил я из чисто исследовательских соображений срипать виндовский калькулятор, как описано в статье Broken Sword'а (CODE-RIP: искусство выдирания чужого кода - Часть I. Теория), сгенерил исходник calc.asm из бинарника calc.exe, юзаю ИДУ (следуя статье). Добился его компилябельности. И тут настал момент линковки, вылезли следующие ошибки: calc.obj : error LNK2001: unresolved external symbol _RegOpenKeyExA@20 calc.obj : error LNK2001: unresolved external symbol _RegQueryValueExA@24 ... и т.д. Зарезолвил ошибки, заменив в calc.asm все функции по следующей схеме: RegOpenKeyExA -> RegOpenKeyExA@20 RegQueryValueExA -> RegQueryValueExA@24 ... и т.д. большенство сообщений пропало! Остались сообщения, типа следующих: calc.obj : error LNK2001: unresolved external symbol ___imp_??3@YAXPAX@Z calc.obj : error LNK2001: unresolved external symbol ___imp_??1type_info@@UAE@XZ как бы сделать так, чтобы линкер схавал всю эту бадью? иными словами как преобразовать замангленое имя, чтобы линкер понимал и импортировал их. Спасибо!
liss линкеру включать ничего не надо, все эти demangled нужно влкючить в самой IDA (сейчас нахожусь в селе и IDA под рукой нет), она поменяет все эти _??3@YAXPAX@Z на метки вида sub_xxxx и все будет компилиться.
2Broken Sword Там есть такой код: ; void __cdecl operator delete(void *) ??3@YAXPAX@Z proc near ; CODE XREF: .text:0101269Cp ; .text:010126B4p jmp ds:__imp_??3@YAXPAX@Z ; __declspec(dllimport) operator delete(void *) ??3@YAXPAX@Z endp Переходник ??3@YAXPAX@Z юзаются в приложении, чтобы явно не вызывать __imp__??3@YAXPAX@Z. Откуда видно, что он передает управление в msvcrt.dll. Значит нужно импортировать? Или я что-то недопонимаю? Ты имел ввиду, что IDA автоматом переименовывает ??3@YAXPAX@Z в что-нибудь типа sub_xxxx?
1.IDA меню options/demangled names 2. trl это я не правильно написал run-time library (rtl) скорее всего без нормальной точки входа , где происходит инициализация rtl это работать не будет разве что сделать obj и прилинковать к программе на с++
Есть такая хорошая система ADAXX adaxx.narod.ru этот дизассемблер делает качественные ассемблируемые (МАСМ) листинги так что лучше его для таких целей использовать... проверено на 900кб ЕХЕшники который после дизассемблирования был успешно собран.... инструкции и тд итп всё на сайте...
2 Fallout Спасибо за совет, я попробую как-нибудь его. Но мне все-таки интересен вопрос КАК? буду копать...