首页
社区
课程
招聘
[旧帖] 如何取出寄存器为的数据?(求助) 0.00雪花
发表于: 2012-3-29 16:39 7313

[旧帖] 如何取出寄存器为的数据?(求助) 0.00雪花

2012-3-29 16:39
7313
如何得到一个正在运行中的寄存器数据,特别是:esp寄存器中的数据。因为我想知道某个程序运行到哪里了? (不好意思,我要取的是eip 寄存器中的数据,不是esp)

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 1121
活跃值: (877)
能力值: ( LV5,RANK:66 )
在线值:
发帖
回帖
粉丝
2
要是好几个线程同时运行的呢?你得说说你要干什么吧。
2012-3-29 16:45
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我在做游戏自动脚本,我想做一个记录程序工作的每个地址,形成一个程序
2012-3-29 17:13
0
雪    币: 139
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LZ说的是不是在OD里啊
2012-3-29 17:14
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不是用别的人软件,我想自己编个软件取出来。因为我现在不知程序运行到哪里了,我想实时取出。
2012-3-29 17:19
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
也就是进行调试
2012-3-29 17:19
0
雪    币: 31
活跃值: (53)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
脚本语言需要解释器的,你想了解你的代码是怎么运行的,直接调试解释器好了。
2012-3-29 17:52
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
对的,就是解释器如何写啊
2012-3-29 19:14
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不好意思,我要取的是eip 寄存器中的数据,不是esp
2012-3-29 19:22
0
雪    币: 138
活跃值: (555)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10

call li
li: pop ebx
add ebx, 0x6
push ebx
retn

mov ebx, ebx ; ebx = 当前代码 eip


灵活变通下就行了
2012-3-29 19:39
0
雪    币: 31
活跃值: (53)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
你知道Eip指向的指令占多少字节?386指令不等长,感觉还是自己调试解释器看看解释器是如何解释你的脚本的实在。另外你可以找找和你解释器的开发文档或者源码等相关资料。
一般一种脚本对应一种解释器,脚本语言不需要知道功能是怎么实现的,只知道如何去实现就可以了。
2012-3-30 11:14
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢楼上的朋友,我虽然不知:  call li
li:    pop ebx
    add ebx, 0x6
    push ebx
    retn

    mov ebx, ebx   ; ebx = 当前代码 eip
这几句的意思,如果真的能搞定EIP,我就有办法搞定调试了,谢谢朋友
2012-3-30 13:38
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
不如学学e语言做个外挂得了,冒昧地讲,楼主的思路对于楼主的编程水平来说,是过于高深的,是行不通的
2012-3-30 14:09
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这类问题去stackoverflow上一般都有答案 035K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4@1j5h3y4C8L8%4k6W2M7X3k6D9L8%4N6Q4x3X3g2U0L8$3#2Q4x3V1k6I4N6h3g2K6N6r3W2G2L8Y4y4Q4x3V1j5#2z5e0V1&6y4U0S2Q4x3V1k6J5k6h3q4V1K9h3&6Y4i4K6u0V1M7s2u0G2k6%4u0S2L8g2)9J5k6r3y4G2N6h3&6@1k6i4u0Q4x3X3c8V1K9i4u0W2j5%4c8D9P5b7`.`.

----------- quote -------------
0x0001       call _here
0x0002       _here: pop eax  ; eax now holds the PC.
-------------end ---------------

解释:eip永远指向下一条要执行的指令地址,执行到call _here时候,eip的值就是_here:pop eax的地址 0x0002, 此时调用 call _here会将当前eip值压栈,然后跳转到_here执行pop eax,这时候eax的就是刚才压入栈中的eip,也就是当前正在执行的指令地址
2012-4-12 19:21
0
雪    币: 297
活跃值: (325)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
15
获取当前活动的线程然后getthredcontext
2012-4-12 19:41
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
用OD打开那个软件后,然后用OD插件记录EIP不就行了。。。
2012-4-22 03:26
0
雪    币: 615
活跃值: (212)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
17
兄弟的方法不错哦!
2012-4-22 03:47
0
游客
登录 | 注册 方可回帖
返回