加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB的OEP特征

发布时间:2020-12-17 07:36:18 所属栏目:百科 来源:网络整理
导读:前言 看到一个小工具,用来查一个指定壳. 主要是size很小,只有9KB. 想逆向练习下,这么小,一定是没壳的,拖进IDA,一个函数都没有,才知道加了壳. 用PEID,Die,RDG查壳,都指出是UPX. 载入OD,ESP定律,F9后,直接停在jmp xx,再F8,到了OEP. 记录 00401074 68 F41B4000

前言

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

记录

00401074    68 F41B4000     push    00401BF4
00401079    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     ecx
00401BF4      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      8C
00401BF9      0E            db      0E
00401BFA      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      00
00401073      00            db      00
00401074      68            db      68                               ;  CHAR 'h'
00401075      F41B4000      dd      IsItArma.00401BF4
00401079      E8            db      E8
0040107A      EE            db      EE
0040107B      FF            db      FF
0040107C      FF            db      FF
0040107D      FF            db      FF

这样看不出来是代码,删除OD的分析,就看出是代码了.

00401072    0000            add     byte ptr [eax],al               ; this is VB's OEP
00401074    68 F41B4000     push    00401BF4
00401079    E8 EEFFFFFF     call    0040106C                         ; jmp to MSVBVM50.ThunRTMain
0040107E    0000            add     byte ptr [eax],al

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读