VB的OEP特征

来源:互联网 发布:贵阳大数据培训机构 编辑:程序博客网 时间:2024/05/24 02:36

前言

看到一个小工具, 用来查一个指定壳.
主要是size很小, 只有9KB.
想逆向练习下, 这么小, 一定是没壳的, 拖进IDA, 一个函数都没有, 才知道加了壳.
用PEID, Die,RDG查壳, 都指出是UPX.
载入OD, ESP定律, F9后, 直接停在jmp xx, 再F8, 到了OEP.

记录

00401074    68 F41B4000     push    00401BF400401079    E8 EEFFFFFF     call    0040106C                    ; jmp to MSVBVM50.ThunRTMain

VB的OEP特征:
一个push + 一个call
call是MSVBVM50.ThunRTMain
push的内容是一个字符串”VB5!”

00401BF4  56 42 35 21 8C 0E 2A 00 00 00 00 00 00 00 00 00  VB5!?*.........

如果知道是VB的程序, 在程序跑起来后, 找OEP的方法.

  • 程序跑起来后, 用OD暂停
  • OD => 菜单View => Memory
  • 找到程序的PE头下面的节, 记下地址 => 右键菜单 => Dump in CPU
Memory map, item 22 Address=00401000 Size=00008000 (32768.) Owner=IsItArma 00400000 Section=UPX0 Type=Imag 01001002 Access=R Initial access=RWE
  • goto 到 00401000
  • 右键菜单,搜索2进制字符串, 填入Ascii字符串VB5!, 开始搜索.
    这里写图片描述
    在代码中搜到了2进制字符串”VB5!”, 不容易看出是字符串, CTRL_L只有这一个地方.
    用”Analyze This”插件分析一下, 可以看出是字符串了.
00401BF2   .  FFE1          jmp     ecx00401BF4      56            db      56                          ;  CHAR 'V'00401BF5      42            db      42                          ;  CHAR 'B'00401BF6      35            db      35                          ;  CHAR '5'00401BF7      21            db      21                          ;  CHAR '!'00401BF8      8C            db      8C00401BF9      0E            db      0E00401BFA      2A            db      2A                          ;  CHAR '*'00401BFB      00            db      00

可以看出”VB5!”字符串地址为00401BF4.
因为VB程序的OEP特征是:
push offset “VB5!”
call MSVBVM50.ThunRTMain
所以确定了offset “VB5!”之后, 可以搜指令 push offset “VB5!”, 即搜索 push 00401BF4
代码区 => search for => Command, 这样找还找不到, 要先删除OD的分析后,再查找才能找到.

还可以找字符串的地址参考
这里写图片描述
这里写图片描述
去00401075看看.

00401072      00            db      0000401073      00            db      0000401074      68            db      68                               ;  CHAR 'h'00401075      F41B4000      dd      IsItArma.00401BF400401079      E8            db      E80040107A      EE            db      EE0040107B      FF            db      FF0040107C      FF            db      FF0040107D      FF            db      FF

这样看不出来是代码, 删除OD的分析,就看出是代码了.
这里写图片描述

00401072    0000            add     byte ptr [eax], al               ; this is VB's OEP00401074    68 F41B4000     push    00401BF400401079    E8 EEFFFFFF     call    0040106C                         ; jmp to MSVBVM50.ThunRTMain0040107E    0000            add     byte ptr [eax], al
0 0
原创粉丝点击