Сейчас на форуме: bartolomeo, -Sanchez- (+4 невидимых) |
eXeL@B —› Вопросы новичков —› Передача аргументов через стек |
Посл.ответ | Сообщение |
|
Создано: 03 апреля 2006 18:23 · Личное сообщение · #1 Господа! Столкнулся со следующей проблемой: задача - вызвать функцию находящуюся в готовой dll библиотеке на языке высокого уровня. Вот что выдал IDA .text:10001250 ; int __cdecl SetSize(int &,float *,char *) .text:10001250 public ?SetSize@@Z .text:10001250 ?SetSize@@Z proc near .text:10001250 .text:10001250 var_C = dword ptr -0Ch .text:10001250 var_4 = dword ptr -4 .text:10001250 arg_0 = dword ptr 4 .text:10001250 arg_4 = dword ptr 8 .text:10001250 arg_8 = dword ptr 0Ch .text:10001250 .text:10001250 mov eax, large fs:0 .text:10001256 mov ecx, [esp+arg_0] Если с arg0,arg_4,arg_8 вроде как все ясно, то что такое var_C и var_4 Почему возращаемые аргументы - ниже вершины стека??? |
|
Создано: 03 апреля 2006 23:34 · Личное сообщение · #2 Странно оно. Может IDA глючит. Идея одна накатай прогу вызывающую эту функцию, и посмотри под олей. Количество передаваемых параметров можно посмотреть и так: найди конец функции и посмотри на сколько она стек ровняет при выходе. Только ведь её могли написать так, что она не выравнивает стек, а сама прога ровнять должна. Большая либа? |
|
Создано: 04 апреля 2006 08:14 · Личное сообщение · #3 Не глючит. Оля то же самое показывает. Зачам прогу писать? В оле есть очень удобная приблуда, позволяет отлаживать DLL. Стек она сама выравнивает. Вот выход из нее: mov ecx, [esp+18h+var_C] pop edi pop esi xor eax, eax mov large fs:0, ecx pop ebp add esp, 0Ch retn Есть мысли? Может это просто "мусор"? или Глобальные переменные? |
|
Создано: 04 апреля 2006 17:09 · Личное сообщение · #4 |
|
Создано: 04 апреля 2006 17:09 · Личное сообщение · #5 |
eXeL@B —› Вопросы новичков —› Передача аргументов через стек |