能力值:
( LV5,RANK:66 )
|
-
-
2 楼
要是好几个线程同时运行的呢?你得说说你要干什么吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我在做游戏自动脚本,我想做一个记录程序工作的每个地址,形成一个程序
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
LZ说的是不是在OD里啊
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
不是用别的人软件,我想自己编个软件取出来。因为我现在不知程序运行到哪里了,我想实时取出。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
也就是进行调试
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
脚本语言需要解释器的,你想了解你的代码是怎么运行的,直接调试解释器好了。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
对的,就是解释器如何写啊
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不好意思,我要取的是eip 寄存器中的数据,不是esp
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
call li li: pop ebx add ebx, 0x6 push ebx retn
mov ebx, ebx ; ebx = 当前代码 eip
灵活变通下就行了
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
你知道Eip指向的指令占多少字节?386指令不等长,感觉还是自己调试解释器看看解释器是如何解释你的脚本的实在。另外你可以找找和你解释器的开发文档或者源码等相关资料。
一般一种脚本对应一种解释器,脚本语言不需要知道功能是怎么实现的,只知道如何去实现就可以了。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
谢谢楼上的朋友,我虽然不知: call li
li: pop ebx
add ebx, 0x6
push ebx
retn
mov ebx, ebx ; ebx = 当前代码 eip
这几句的意思,如果真的能搞定EIP,我就有办法搞定调试了,谢谢朋友
|
能力值:
( LV5,RANK:70 )
|
-
-
13 楼
不如学学e语言做个外挂得了,冒昧地讲,楼主的思路对于楼主的编程水平来说,是过于高深的,是行不通的
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
这类问题去stackoverflow上一般都有答案 http://stackoverflow.com/questions/599968/reading-program-counter-directly----------- 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,也就是当前正在执行的指令地址
|
能力值:
( LV4,RANK:55 )
|
-
-
15 楼
获取当前活动的线程然后getthredcontext
|
能力值:
( LV3,RANK:20 )
|
-
-
16 楼
用OD打开那个软件后,然后用OD插件记录EIP不就行了。。。
|
能力值:
( LV9,RANK:140 )
|
-
-
17 楼
兄弟的方法不错哦!
|
|
|