首页
社区
课程
招聘
[求助]关于调用DLL内部函数问题?
发表于: 2007-4-28 21:27 7410

[求助]关于调用DLL内部函数问题?

2007-4-28 21:27
7410
我最近编一程序,需要调用一个别人的DLL内的函数。经过动态跟踪,知道输入3个函数,其中2个是DWORD,一个是指针。但不知道返回什么,(返回内容不影响程序执行)
我遇到的问题是返回后有个ESP+0C导致程序非法操作,如果把它NOP掉后,程序正常。我想问这个ESP+0C是什么意思?
具体形式是:
call xxxxx;
add esp,0c;

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
如果你反汇编过一个C程序,你一定会看到类似:

sub esp,8或者 add esp,8 之类的。

add esp,0c 其实就是恢复堆栈。这个在C语言中很普遍,堆栈由自己清除。
2007-4-28 23:27
0
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
3
说明函数有三个参数吧
2007-4-29 16:08
0
雪    币: 431
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我知道有3个参数,但应该前面有个ESP-0C,调用完成后再esp+0c.现在只有加,没有减.所以返回后esp出错.如果手动把esp+c给nop掉,程序就能顺利执行.这是为什么?
2007-4-30 09:47
0
雪    币: 3186
活跃值: (2443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
PUSH XXX
PUSH XXXXX
PUSH XXXXXXX
CALL  XXXXX
ADD ESP,0C
2007-4-30 10:21
0
雪    币: 431
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
PUSH XXX
PUSH XXXXX
PUSH XXXXXXX
CALL  XXXXX
ADD ESP,0C

这些在程序中都有,原来的程序中前面还有个 dec esp,0c
2007-5-2 10:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
stdcall调用不是子程序自动恢复堆栈??
2007-5-6 21:07
0
游客
登录 | 注册 方可回帖
返回
//