Сейчас на форуме: bartolomeo, -Sanchez- (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Передача аргументов через стек
Посл.ответ Сообщение

Ранг: 4.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 Почему возращаемые аргументы - ниже вершины стека???



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 03 апреля 2006 23:34
· Личное сообщение · #2

Странно оно. Может IDA глючит.
Идея одна накатай прогу вызывающую эту функцию, и посмотри под олей.
Количество передаваемых параметров можно посмотреть и так: найди конец функции и посмотри на сколько она стек ровняет при выходе.
Только ведь её могли написать так, что она не выравнивает стек, а сама прога ровнять должна.
Большая либа?



Ранг: 4.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 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

Есть мысли? Может это просто "мусор"? или Глобальные переменные?



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 04 апреля 2006 17:09
· Личное сообщение · #4

bloM пишет:
что такое var_C и var_4 Почему возращаемые аргументы - ниже вершины стека???

это локальные переменные



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 04 апреля 2006 17:09
· Личное сообщение · #5

bloM пишет:
что такое var_C и var_4 Почему возращаемые аргументы - ниже вершины стека???

это локальные переменные


 eXeL@B —› Вопросы новичков —› Передача аргументов через стек
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати