首页 > 解决方案 > ASM 对 C++ 的调用

问题描述

我正在尝试学习一些逆向工程,但我陷入了困境。

我有这个asm代码:

mov ecx,[0x00E81DAC]
push [ebp-04]
add ecx,04
mov eax,[ecx]
call dword ptr [eax+08]

据我了解,它将地址0x00E81DAC的结果设置为ecx

然后它传递一个参数ebp - 0x4 (在我的例子中ebp是一个整数参数,可以说27590

然后它添加到ecx +4(所以0x00E81DAC + 0x4的结果?)

然后它得到 ecx 的结果并将设置为 eax

然后它调用eax +0x8

这是我想出来的,但它错了

DWORD* (__thiscall* callFunc) (int) = (DWORD* (__thiscall*)(int argument))((0x00E81DAC + 0x4) - 0x8);
DWORD* retValue = callFunc(27590);

该函数应返回一个 DWORD*

调用这个的正确方法是什么?

标签: c++assemblymemoryx86reverse-engineering

解决方案


推荐阅读