首页
社区
课程
招聘
[分享]内联汇编获取函数参数
发表于: 2018-4-3 16:36 3539

[分享]内联汇编获取函数参数

2018-4-3 16:36
3539
目标函数有两个参数,想实时获取参数值
OD反汇编显示结果如下
$ ==>    > 00401691  返回到 test.00401691 来自 test.00401559
$+4      > 00140258//参数1
$+8      > FFFFFFFE//参数2
$+C      > 004057C6  返回到 test.004057C6 来自 test.004057D1
$+10     > 0018F7F0
$+14     > 0018F818

结论:
1 在函数开头断下,esp指向返回地址
2 [esp+4]指向参数1
3 [esp+8]指向参数2
于是我在函数开头位置下钩子,
置入汇编代码如下:
push eax
//获取参数1
mov eax,[esp+4]
mov [pParam],eax
//获取参数2
mov eax,[esp+8]
mov [pParam+4],eax
pop eax
但是这样是错误的
[esp+4]获取的是返回地址
[esp+8] 获取的是参数1
怎么会这样呢?奇怪
原来,执行第一行 push eax后esp-4了
当前esp存放了eax的值,esp+4存放的才是返回地址
更改如下:
push eax
//获取参数1
mov eax,[esp+8]
mov [pParam],eax
//获取参数2
mov eax,[esp+c]
mov [pParam+4],eax
pop eax

成功获取参数
一个小小的心得,分享给大家




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 60
活跃值: (1010)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
靠,现在才知道?  push  ebp指针变了。
2018-4-3 16:57
0
雪    币: 123
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
yangya 靠,现在才知道? push ebp指针变了。
这个知道啊,只是写内联汇编的时候忘记了
2018-4-3 18:24
0
雪    币: 914
活跃值: (2293)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
4
看雪帖子越来越水
2018-4-3 21:38
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
万剑归宗 看雪帖子越来越水
都是这么过来,新人成长需要的是帮助而不是打击。
2018-4-3 22:11
1
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
6
万剑归宗 看雪帖子越来越水
论坛是鼓励大家分享的,无论技术怎样。对于分享者可以得到交流与被指导的机会,快速成长;前辈们看到后的指点迷津能够起到引导作用;新人们看到了可以获取更多的经验!这是技术论坛的初衷
2018-4-3 22:13
0
雪    币: 2089
活跃值: (3111)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
7
欢迎入坑
2018-4-3 22:13
0
雪    币: 189
活跃值: (267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
为什么不用高级语法获取而使用这种低端的技术
2018-4-3 22:14
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
9
wx_艺人 为什么不用高级语法获取而使用这种低端的技术
手写简单的shellcode这样更快些
2018-4-3 22:16
0
游客
登录 | 注册 方可回帖
返回
//