【reversing.kr】Replace逆向分析

来源:互联网 发布:怎么使用vim编译c语言 编辑:程序博客网 时间:2024/06/05 17:53

Date:2015年10月30日 17:13:11

Location: HangZhou

先对程序进行一次静态分析,发现目标地址不可达到:
.text:00401071 ; ---------------------------------------------------------------------------.text:00401071.text:00401071 loc_401071:                             ; CODE XREF: DialogFunc+36A4j.text:00401071                 jmp     short loc_401084.text:00401073 ; ---------------------------------------------------------------------------.text:00401073                 push    offset String   ; "Correct!".text:00401078                 push    3E9h            ; nIDDlgItem.text:0040107D                 push    esi             ; hDlg.text:0040107E                 call    ds:SetDlgItemTextA.text:00401084
    具体是因为地址00401071处强行进行了跳转。静态分析到此,没有思路了,上动态调试,OD。单步调试到如下代码。    发现mov了一个90到目标位置,只要我们成功控制其写入的目标地址,我们就可以给地址00401071处打上补丁。
0040466F   $  C600 90       mov byte ptr ds:[eax],0x9000404672   ?  C3            retn00404673   ?  0081 05D08440 add byte ptr ds:[ecx+0x4084D005],al00404679   ?  00C7          add bh,al0040467B   ?  05 16604000   add eax,00406016                         ;  UNICODE "惫怜"00404680   ?  EB 60         jmp short 004046E200404682   ?  90            nop00404683   ?  61            popad
    此时我们测试数据为1234,写入的目标地址为0x60160A9D。    相对偏移为0x601605cb    flag = 0x100401071-0x601605cb
flag:2687109798
1 0