我收到新手的HELP信号,趁工作不是特别忙的时候试试解一下,我估计这个应该是个变形的FSG。好,拿到软件载入OD,记住前辈们的提示,FSG的共同特征是:
jmp ...
dec ....
je ....
我们就用手工往下拉,看到了:
00456E64 50 push eax
00456E65 EB 09 jmp short VodSrv.00456E70
00456E67 FE0E dec byte ptr ds:[esi]
00456E69 - 0F84 9171FEFF je VodSrv.0043E000 //这个就有可能是OEP了,好就在这里下断(为什么我不直接运行进去直接脱壳,一会就知道原因了)
00456E6F 56 push esi
00456E70 55 push ebp
下面就要注意了,要有点耐心,按F9运行,自己默数按了多少次程序会运行,我运行到107次时程序运行了,OK,重新载入,继续下断,运行106次继续被断在
00456E69,这次不要点F9了,我们F8跟进,进去以后竟然是这样显示,
0043E000 9C db 9C
0043E001 60 db 60 ; CHAR '`'
0043E002 8B db 8B
0043E003 44 db 44 ; CHAR 'D'
0043E004 24 db 24 ; CHAR '$'
0043E005 24 db 24 ; CHAR '$'
0043E006 E8 db E8
0043E007 00 db 00
不急我们用CTRL+A分析一下,代码就出来了。
0043E000 . 9C pushfd
0043E001 . 60 pushad
0043E002 . 8B4424 24 mov eax,dword ptr ss:[esp+24]
0043E006 . E8 00000000 call VodSrv.0043E00B
如果是普通的FSG这里应该就可以DUMP了,可是你试试看,肯定不行。那我们继续F8跟进
0043E0CC |. 61 popad
0043E0CD |. 9D popfd
0043E0CE |. 68 02584200 push VodSrv.00425802
0043E0D3 |> C3 retn //一直到这里要返回了,继续跟进
来到这里
00425802 /. 55 push ebp //看看这是什么??嘿嘿,那不就是四处乱躲的OEP??OK,还等什么啊,赶紧DUMP啊!!
00425803 |. 8BEC mov ebp,esp
00425805 |. 6A FF push -1
00425807 |. 68 28BA4200 push VodSrv.0042BA28
0042580C |. 68 8E594200 push VodSrv.0042598E ; jmp 到 MSVCRT._except_handler3; SE 处理程序安装
脱壳完直接就可以运行了,根本就不要修复,看只是绕一个小圈而已嘛~~~^-^
当然我这种做法是比较笨,适合菜鸟学习,高手肯定不会那么做,有什么好意见一定提出来大家分享哦
风尘
2006.05.19