飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4288|回复: 8

[原创] Private Exe Protector V2.0快速脱壳!

[复制链接]

该用户从未签到

发表于 2008-7-8 20:38:20 | 显示全部楼层 |阅读模式
【破文标题】Private Exe Protector V2.0脱壳
【破文作者】tangxiaodao
【作者邮箱】tangxiaodao@gmail.com
【作者主页】dtxd.vicp.net  QQ:172751148  
破解工具】PEID V0.94,DeFixed,LoadPE,ImportREC
【破解平台】Window XP sp2
【软件名称】某一国产外挂(在这里同大家交流脱壳方法,所以软件就不说了)
【原版下载】不提供下载地址了
【保护方式】Private exe Protector V2.0 -> SetiSoft Team *
【作者声明】我是菜鸟。偶遇一点脱壳心得,愿与大家分享。
【详细过程】
1.首先查壳:Private exe Protector V2.0 -> SetiSoft Team *  据说此壳很猛(关于壳的介绍大家
可以到百度,GooGle上面找),但有所心不甘,就信手动之。
2.寻找OEP,这步比较容易.
   OD载入(我用的是DeFixed版本).停在这里:
   
00401000 > $  60            PUSHAD
00401001   .  61            POPAD
00401002   .  89F9          MOV ECX,EDI
00401004   .  51            PUSH ECX
00401005   .  58            POP EAX
00401006   .  89D8          MOV EAX,EBX
00401008   .  39F2          CMP EDX,ESI
0040100A   .  8D3B          LEA EDI,DWORD PTR DS:[EBX]
0040100C   .  85F2          TEST EDX,ESI
0040100E   .  BF 79D7BD2B   MOV EDI,2BBDD779
00401013   .  66:9C         PUSHFW
00401015   .  66:9D         POPFW
00401017   .  29DF          SUB EDI,EBX
00401019   .  F7D9          NEG ECX
0040101B   .  75 00         JNZ SHORT 0040101D
0040101D   >  C1F1 8D       SAL ECX,8D

然后ALT+M打开内存,用内存断点法分次在.rdata  .rsrc  .data  .code段下断并F9运行
其实就是四次内存断点法,最后来到这里

0046A944    55              PUSH EBP
0046A945    8BEC            MOV EBP,ESP
0046A947    83C4 F0         ADD ESP,-10
0046A94A    B8 3CA74600     MOV EAX,0046A73C
0046A94F    E8 94BAF9FF     CALL 004063E8
0046A954    A1 9CC34600     MOV EAX,DWORD PTR DS:[46C39C]
0046A959    8B00            MOV EAX,DWORD PTR DS:[EAX]
0046A95B    E8 2CDBFEFF     CALL 0045848C
0046A960    A1 9CC34600     MOV EAX,DWORD PTR DS:[46C39C]

大家看到了吧!很明显是delphi程序的入口点,这不就是OEP了嘛!然后dump出来,此时用ImportREC修复,出

现问题了,找不到IAT地址了.看来IAT加密了,咋办?当然是找IAT的真实地址了。

3.寻找IAT地址,这步也不是很难
   用HexWorkShop打开加壳程序,拉到最后,如下图:

大家看到KerNel32.dll  ExitProcess这样的东东了
吧,然后记下前面的地址。在OD中到这个地址,然后向上翻翻,找到类似  Call xxxxxx ,JMP xxxxxx类似
的东东,因为delphi的程序的特殊性,所以我找到的call如下:
00587F81    E8 0E50A4B0     CALL B0FCCF94
00587F86    2E:2986 C08E1F5>SUB DWORD PTR CS:[ESI+531F8EC0],EAX
00587F8D    0D 4BE5D9DA     OR EAX,DAD9E54B
00587F92    40              INC EAX
00587F93    B9 489E10A5     MOV ECX,A5109E48
00587F98    36:D188 47AA22A>ROR DWORD PTR SS:[EAX+A322AA47],1
00587F9F    91              XCHG EAX,ECX

在这个call地址下内存访问断点,F9运行,来到这里
0048269F    54              PUSH ESP
004826A0    E8 B3EAFFFF     CALL 00481158                            ; JMP to

kernel32.QueryPerformanceCounter
004826A5    85C0            TEST EAX,EAX
004826A7    74 0B           JE SHORT 004826B4
004826A9    8B0424          MOV EAX,DWORD PTR SS:[ESP]
004826AC    A3 08403900     MOV DWORD PTR DS:[394008],EAX
004826B1    59              POP ECX
004826B2    5A              POP EDX
004826B3    C3              RET
004826B4    E8 A7EAFFFF     CALL 00481160                            ; JMP to

kernel32.GetTickCount

大家看到后面的注释内容了吧,那是什么?不就是API嘛!选一个call,键盘上按Enter,来到这里
00481068  - FF25 48913900   JMP DWORD PTR DS:[399148]                ; kernel32.CreateFileA
0048106E    8BC0            MOV EAX,EAX
00481070  - FF25 44913900   JMP DWORD PTR DS:[399144]                ; kernel32.GetFileType
00481076    8BC0            MOV EAX,EAX
00481078  - FF25 40913900   JMP DWORD PTR DS:[399140]                ; kernel32.GetFileSize
0048107E    8BC0            MOV EAX,EAX
00481080  - FF25 3C913900   JMP DWORD PTR DS:[39913C]                ;

kernel32.GetStdHandle
00481086    8BC0            MOV EAX,EAX
00481088  - FF25 38913900   JMP DWORD PTR DS:[399138]                ;

kernel32.RaiseException
0048108E    8BC0            MOV EAX,EAX
00481090  - FF25 34913900   JMP DWORD PTR DS:[399134]                ; kernel32.ReadFile
00481096    8BC0            MOV EAX,EAX
00481098  - FF25 30913900   JMP DWORD PTR DS:[399130]                ; ntdll.RtlUnwind
0048109E    8BC0            MOV EAX,EAX
004810A0  - FF25 2C913900   JMP DWORD PTR DS:[39912C]                ;

kernel32.SetEndOfFile
004810A6    8BC0            MOV EAX,EAX
004810A8  - FF25 28913900   JMP DWORD PTR DS:[399128]                ;

kernel32.SetFilePointer
004810AE    8BC0            MOV EAX,EAX
004810B0  - FF25 24913900   JMP DWORD PTR DS:[399124]                ;

kernel32.UnhandledExceptionFilter
004810B6    8BC0            MOV EAX,EAX
004810B8  - FF25 20913900   JMP DWORD PTR DS:[399120]                ; kernel32.WriteFile
004810BE    8BC0            MOV EAX,EAX
004810C0  - FF25 1C913900   JMP DWORD PTR DS:[39911C]                ; kernel32.ExitProcess

这不正是我们想到的东东嘛!然后随便选一个JMP在数据窗口中跟随,如下:
00499148  7C801A24  kernel32.CreateFileA
0049914C  7C809B47  kernel32.CloseHandle
00499150  00000000
00499154  77D3119B  user32.GetKeyboardType
00499158  77D5058A  user32.MessageBoxA
0049915C  00000000
00499160  77DA7883  ADVAPI32.RegQueryValueExA
00499164  77DA761B  ADVAPI32.RegOpenKeyExA
00499168  77DA6BF0  ADVAPI32.RegCloseKey
0049916C  00000000
00499170  770F4880  oleaut32.SysFreeString
00499174  771244AD  oleaut32.SysReAllocStringLen
00499178  770F4BA7  oleaut32.SysAllocStringLen
0049917C  00000000
00499180  7C809BC5  kernel32.TlsSetValue
00499184  7C809740  kernel32.TlsGetValue
00499188  7C8136D7  kernel32.TlsFree
0049918C  7C812D9F  kernel32.TlsAlloc
00499190  7C80992F  kernel32.LocalFree
00499194  7C80998D  kernel32.LocalAlloc
......
嘿。。大家轻松快活地去IAT的起始地址和结束地址去吧!

4.ImportREC修复程序
   OEP找到了  RVA知道了  大小知道了  全部输入->获得输入信息,全部有效->修复抓取文件!
   OK!脱壳完毕!



********************本脱文出自原创,如需转载,请注明出处,谢谢!**********************

[ 本帖最后由 tangxiaodao 于 2008-7-8 20:49 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2008-7-8 20:43:42 | 显示全部楼层
自己抢个SF坐坐吧!别人的SF老是抢不到^_^
PYG19周年生日快乐!

该用户从未签到

发表于 2008-7-8 21:21:00 | 显示全部楼层
外挂发上来练习一下。呵呵。
PYG19周年生日快乐!

该用户从未签到

发表于 2008-9-2 10:35:04 | 显示全部楼层
很好的文章..呵呵
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-9-25 11:58
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2008-9-2 12:24:22 | 显示全部楼层
    看这壳的猥琐程度,貌似非PEP加的壳,而到像是PEID识别出错,PEP是一款比较猥琐的壳,这里我用PEP正版加了一个计算器,加密力度:最小(选项除勾选注册NAG作为演示外,其余功能选项均不选):loveliness:

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-26 07:32:33 | 显示全部楼层
    ...这壳我都没见过
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-1-3 16:11
  • 签到天数: 39 天

    [LV.5]常住居民I

    发表于 2009-1-26 18:41:39 | 显示全部楼层
    看这壳的猥琐程度,我根本看不懂
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-2 19:14:17 | 显示全部楼层
    我想问高手   内存断点 什么时候用2次什么时候用4次 不会告我要自己一次一次试验吧/:01
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-2 19:27:56 | 显示全部楼层
    相当不错啊  可是附件的地址怎么看?
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表