首页
社区
课程
招聘
[求助]有没有这样的代码?能自动修复 jmp 与 call 这样的指令的?
发表于: 2009-10-17 02:30 3993

[求助]有没有这样的代码?能自动修复 jmp 与 call 这样的指令的?

2009-10-17 02:30
3993
我现在要将 内存中的一个函数, 复制到另一个地方去 ,

所以直接 memcpy 就可以了,

但是,里面的 跳转与 call , 有没有什么代码可以进行自动修复?

自己去写感觉难度有点大,

不知道前人有没有留下这点东西

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
http://bbs.pediy.com/showthread.php?t=85491&highlight=fixcode&page=2

18楼

仅供参考

看了楼主修复 CALL 和 JXX 的函数,狂晕了一下,这C不是一般难懂,下面来个ASM版本的

fixcode proc  PCopyNtOpenProcess_addr:dword,PNtOpenProcess_addr:dword,PNtOpenProcess_Size:dword
       ;write by fixfix
        pushad
        mov edi,PCopyNtOpenProcess_addr
        mov ecx,PNtOpenProcess_Size
        mov esi,PNtOpenProcess_addr
        rep movsb
        popad
        
        pushfd
        pushad
        xor ecx,ecx
        mov eax,PNtOpenProcess_addr
j:      cmp PNtOpenProcess_Size,ecx
        jne @F
        popad
        popfd
        ret 12
@@:     cmp byte ptr [eax],0e8h
        jne @f
        mov edx,dword ptr [eax+1]
        lea esi,dword ptr [eax+edx+5]
        mov edi,PCopyNtOpenProcess_addr
        add edi,ecx
        sub esi,edi
        sub esi,5
        mov dword ptr [edi+1],esi
        add eax,5
        add ecx,5
        jmp j
@@:     cmp byte ptr [eax],0fh
        jne @F
        cmp byte ptr [eax+1],8Fh
        jg @F
        mov edx,dword ptr [eax+2]
        lea esi,dword ptr [eax+edx+6]
        mov edi,PCopyNtOpenProcess_addr
        add edi,ecx
        sub esi,edi
        sub esi,6
        mov dword ptr [edi+2],esi
        add eax,6
        add ecx,6
        jmp j
@@:     inc eax
        inc ecx
        jmp j
fixcode endp
2009-10-17 09:29
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用反汇编引擎分析这类指令,然后修复操作数即可。
2009-10-17 14:26
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
长度5 e8 e9开头 计算后4字节当前地址
自己函数中再计算得出相对地址

一般情况够用了
2009-10-18 05:31
0
游客
登录 | 注册 方可回帖
返回
//