Сейчас на форуме: bartolomeo, tyns777 (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› Подключение дизасма OllyDbg к проекту |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2011 09:58 · Личное сообщение · #1 Вопрос простой, основан на моём незнании С. Вот вчера решил к одному проекту прикрутить олькин дизасм, скачанный отсюда: Скачал, через #include прилепил заголовочный файл, но пишет, что unresolved external symbol на функции дизассемблирования. Блин, как прицепить это добро к проекту? ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 03 марта 2011 10:21 · Поправил: PE_Kill · Личное сообщение · #2 Не делай себе проблем, возьми лучше медиану. У меня в одном проекте олькин двиг уже почти 5 лет используется, видел бы ты сколько там костылей вставлено, после процедуры дизасма, что оно работало как надо. ЗЫ Кстати у оли двиг заточен под борланд си, там даже где то написано, что если не в нем собираете то могут быть проблемы. С ходу помню что там в исходнике нужно пофиксить функцию Pow что ли, как то так ну и еще 1 фикс, чтобы в студии собралось. Короче даже на этапе сборки геморой. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 03 марта 2011 10:25 · Поправил: ARCHANGEL · Личное сообщение · #3 PE_Kill Это было моей первой идеей, но блин (о мои кривые руки) там та же проблема! Кстати у оли двиг заточен под борланд си, там даже где то написано, что если не в нем собираете то могут быть проблемы. С ходу помню что там в исходнике нужно пофиксить функцию Pow что ли, как то так ну и еще 1 фикс, чтобы в студии собралось. Короче даже на этапе сборки геморой. Да, в хэлпе есть такое. Вначале я начал собирать - выскочила какая-то ошибка, правда, связанная с тем, что символ какой-то был дважды определён. Я потёр одно определение (#define), и оно норм компилится, пока код функции какой-нибудь не вызываю. Т.е. когда, собственно, надо компилироваться, то оно не компилится ![]() ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 03 марта 2011 10:32 · Личное сообщение · #4 Ну с ходу: В заголовке нужно закоментить Code:
В ассемблере вставить функу Code:
Вызывается она вот тут Code:
Не помню надо там еще что нет, столько времени прошло. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 03 марта 2011 10:37 · Личное сообщение · #5 |
|
Создано: 03 марта 2011 11:07 · Поправил: OKOB · Личное сообщение · #6 ARCHANGEL пишет: unresolved external symbol Видимо проблема как всегда в таких случаях связана с декорированием имен, и проявляется при подключении С-шного кода в С++ (даже когда прога без ООП). Лечится вставкой перед объявлениями функций в заголовочном файле "extern C" (или перед кажым или группа) extern "C" { int Assemble(char *cmd,ulong ip,t_asmmodel *model,int attempt, int constsize,char *errtext); int Checkcondition(int code,ulong flags); int Decodeaddress(ulong addr,char *symb,int nsymb,char *comment); ulong Disasm(char *src,ulong srcsize,ulong srcip, t_disasm *disasm,int disasmmode); ulong Disassembleback(char *block,ulong base,ulong size,ulong ip,int n); ulong Disassembleforward(char *block,ulong base,ulong size,ulong ip,int n); int Isfilling(ulong addr,char *data,ulong size,ulong align); int Print3dnow(char *s,char *f); int Printfloat10(char *s,long double ext); int Printfloat4(char *s,float f); int Printfloat8(char *s,double d); } ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 03 марта 2011 11:12 · Поправил: DenCoder · Личное сообщение · #7 ARCHANGEL пишет: но пишет, что unresolved external symbol на функции дизассемблирования Возможные варианты, с которыми сталкивался: 1) нет файла .lib для импорта или в Project Properties\Linker\Input\Additional dependencies не указан файл .lib 2) в заголовке для функции пропущен спецификатор типа __declspec(dllimport) 3) не указана концвенция (__stdcall, __cdecl, __fastcall), в результате по дефолту программа пытается привязаться к функциям как к __cdecl, а они объявлены __stdcall в .lib 4) Число и/или тип аргументов и/или тип возвращаемого значения функции в заголовке не соответствует(-ют) объявленным в .lib P.S. extern "C" к пункту 2 хотел добавить. Но к __declspec(dllimport) давно привык ![]() ----- IZ.RU ![]() |
|
Создано: 03 марта 2011 11:20 · Личное сообщение · #8 |
|
Создано: 03 марта 2011 11:26 · Поправил: DenCoder · Личное сообщение · #9 |
|
Создано: 03 марта 2011 18:14 · Личное сообщение · #10 |
|
Создано: 03 марта 2011 18:19 · Личное сообщение · #11 |
|
Создано: 04 марта 2011 10:33 · Личное сообщение · #12 kannabis вчера опять полвечера медитировал с 2008 студией и медианой (и олькиным двигом), уже и инклудил заголовки, и с-шные файлы добавлял к проекту, и расширение на срр менял. Один хрен - не пашет ![]() И extern "C" добавлял - ничего не вышло. У кого-то вообще получалось юзать медиану в проектах студии? ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 04 марта 2011 10:41 · Личное сообщение · #13 На оф сайте пример использования лежит Code:
----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes ![]() |
|
Создано: 04 марта 2011 10:45 · Личное сообщение · #14 |
|
Создано: 04 марта 2011 10:52 · Личное сообщение · #15 Как вариант-подцепи как lib. Этим батником собирается lib, можно хыть в pre-build event запихать его. Code:
В сишник пихается хедер, линкеру кормится lib. ![]() |
|
Создано: 04 марта 2011 15:07 · Личное сообщение · #16 |
|
Создано: 04 марта 2011 18:58 · Личное сообщение · #17 |
|
Создано: 05 марта 2011 13:12 · Личное сообщение · #18 |
|
Создано: 05 марта 2011 13:18 · Личное сообщение · #19 |
|
Создано: 05 марта 2011 13:35 · Личное сообщение · #20 |
|
Создано: 06 марта 2011 09:18 · Личное сообщение · #21 |
![]() |
eXeL@B —› Программирование —› Подключение дизасма OllyDbg к проекту |
Эта тема закрыта. Ответы больше не принимаются. |