能力值:
( LV4,RANK:50 )
|
-
-
2 楼
感觉是你的esp位置不对
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
注入一个DLL,HOOK 这个函数。try catch call org.
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
感谢你的回复, 这方法我考虑过, 感觉不应该这样将问题复杂化, 后来决定放弃这种hook和主楼我的SEH方式, 改用另外的汇编方法解决了这个跳段的问题.
我还是发上出问题的代码位置供大家研究吧:
MOV DWORD PTR SS:[EBP+17C],0
CMP BYTE PTR DS:[ESI],0
JNZ @L008
LEA EBX,DWORD PTR DS:[EBX] ; 此行汇编没用处
@L004:
ADD DWORD PTR SS:[EBP+17C],1
ADD ESI,1
CMP BYTE PTR DS:[ESI],0 ; 这里是造成内存跳段错误的位置
JE @L004
@L008:
PUSH 0
由上面可以看出, 当循环递增读取[ESI]时, 会可能造成跳段, 跳到没有分配的段后就会报错.
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
虽然解决了问题, 但是没有用到SEH, 希望能和大家一起研究用汇编SEH方式解决无源码的程序进行SEH, 这方面资料真少.
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
注册个向量化异常处理比啥不强 瞧你折腾的
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
传送门:
http://bbs.pediy.com/showthread.php?p=1429428#post1429428
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
今天在看《软件调试》的时候貌似看见一点什么,建议你去看一下这本书的第24章,每个SEHHandle会注册写入到TEB的TIB有个ExceptionList字段,你需要把这个字段设置成@exsos试试看
|
|
|