首页
社区
课程
招聘
[原创]Safewow分析笔记
发表于: 2011-1-24 21:28 12386

[原创]Safewow分析笔记

2011-1-24 21:28
12386

最近又玩私服了,好吧我承认我蛋已经碎了……
        这服登陆器好大,达到了9.27M,我第一个反应就是内建了wow主程序,因为我压缩过的,大概ASpack之后是2.56M的样子,你看其中有充分的体积来做各种各样的事情。
        果然,他释放了一个叫做safewow.exe的东西,看图标看说明就是改过的wow主程序。
        什么,你问他为什么要改,你猜……
        看了下,明显的地方告诉你这个壳的名字。你问我为什么会知道?
                 public start
.Safe:01A336C4 start           proc near
.Safe:01A336C4                 call    sub_1A336E6
.Safe:01A336C4 start           endp ; sp-analysis failed
.Safe:01A336C4
.Safe:01A336C4 ; ---------------------------------------------------------------------------
.Safe:01A336C9 aSafengineProte db 'Safengine Protector v1.8.6.0',0        ;这样够明显的了吧……
       
        大家都知道的wow自身就是有一些保护措施的,运行之后要附加进去很难,具体参考http://bbs.pediy.com/showthread.php?t=45935
        而且外面还有一层壳,脱起来很乏味,好吧,我承认我不会脱。但是我毫无压力。
        首先我用普通权限启动这个wow,然后用管理员权限启动LoadPE。为什么要用管理员权限?你没看见它说自己是反外挂登陆器么,我权限比它高了才好让他看不见呀!
        选择safewow.exe,dump整个exe,就可以载入IDA啦。看看,和谐不?
        然后直觉告诉我,修改的部分肯定不会很远,也不会很多,因为本身wow里面就没有多少的cave字节,同时你觉得这个时代做这种外挂的人有几个喜欢没事去大量patch一个庞大的exe?
        然后G 0401000,显然的出现了如下的代码:
.text:00401000                 call    sub_6E4780
.text:00401005                 jmp     loc_99EBB5
        这边么,我想都不想的就知道第二个跳转就是跳到了patch地点,为什么?显然我很经常用OD载入wow的嘛……
.text:0099EBB5 loc_99EBB5:                             ; CODE XREF: .text:00401005j
.text:0099EBB5                 pusha
.text:0099EBB6                 push    6C6Ch
.text:0099EBBB                 push    642E736Dh      
.text:0099EBC0                 push    esp
.text:0099EBC1                 call    dword_99F264   
.text:0099EBC7                 test    eax, eax
.text:0099EBC9                 jz      near ptr 207A5h
.text:0099EBCF                 add     esp, 8
.text:0099EBD2                 push    0
.text:0099EBD4                 push    74696E49h      
.text:0099EBD9                 push    esp
.text:0099EBDA                 push    eax
.text:0099EBDB                 call    dword_10AF9EC   
.text:0099EBE1                 test    eax, eax
.text:0099EBE3                 jz      near ptr 207A5h
.text:0099EBE9                 add     esp, 8
.text:0099EBEC                 call    eax
.text:0099EBEE                 popa
.text:0099EBEF                 jmp     loc_40B362

        很难看懂不是么?来发挥想象力:

.text:0099EBB5 loc_99EBB5:                             ; CODE XREF: .text:00401005j
.text:0099EBB5                 pusha
.text:0099EBB6                 push    'll'
.text:0099EBBB                 push    'd.sm'          ; ms.dll
.text:0099EBC0                 push    esp
.text:0099EBC1                 call    dword_99F264    ; loadlibrary
.text:0099EBC7                 test    eax, eax
.text:0099EBC9                 jz      near ptr 207A5h
.text:0099EBCF                 add     esp, 8
.text:0099EBD2                 push    0
.text:0099EBD4                 push    'tinI'          ; init
.text:0099EBD9                 push    esp
.text:0099EBDA                 push    eax
.text:0099EBDB                 call    dword_10AF9EC   ; getprocaddress
.text:0099EBE1                 test    eax, eax
.text:0099EBE3                 jz      near ptr 207A5h
.text:0099EBE9                 add     esp, 8
.text:0099EBEC                 call    eax
.text:0099EBEE                 popa
.text:0099EBEF                 jmp     loc_40B362

        你猜我这中间有没有用debugger?
        好了,这一刻如果强力的你把外面的壳脱了,修复了,是不是感觉愤怒了?
        恩恩,继续是Safengine Protector,那我也继续。
        看着代码,再回顾区段排列,我突然有意思明悟,这丫的是E语言的静态编译。
        什么你说你不知道OEP在哪边?这个结合自己找,现在我只想关注Init函数。不过看了半天,绕晕了,还是祭出字符串搜索。然后我定位到了sub_4A612A2,看起来很像主处理过程。
        一路看着函数向下,我发现了wow目录之中另外一个文件的名字出现了,A41E0CE3D4019.tmp,看起来40K,不是很大,所以果断用记事本打开,发现开头熟悉的MZ字样,然后丢入LoadPE,发现这个是一个DLL,原名称为CRCDLL.dll。
        但是还不怎么容易理解虽然可以猜测到很多。对易语言不懂,所以还是需要挂到OD里面去。虽然脱壳还是很麻烦,但是我依然可以很巧妙的获得一份干净的ms.dll。然后分析可以看出,其实它的反外挂还是老思路,建个线程扫扫窗口,扫扫网络用的api是不是被hook了。防WPE?改改窗口名,改改注入的dll名,改改patch策略,还不是一样用……话说,居然金山游侠也进黑名单了……
        有点虎头蛇尾的感觉。但是无所谓了。
           说真的SafeEngine Protector的脱壳对我来说还是很难的,毕竟我只是一个小菜,但是保护软件的安全并不只是全靠一个猛壳就能完美的事情不是么?

        值得一提的是,此刻我想起了一个我很早就在思索的问题,海风月影的Email是SafeEngine.com的,我在想他做的StrongOD是不是能过SafeEngine Protector的保护,仔细回味,这真的是一个很严肃的问题……


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
好强大的 “菜鸟”
2011-1-25 01:03
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
3
求交往
2011-1-25 01:05
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
4
asexual?
2011-1-25 02:51
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
妙语连珠~
2011-1-25 10:42
0
雪    币: 417
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
精辟的文章. 给力.
2011-1-25 11:11
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
强大的 “菜鸟”
2011-1-26 09:08
0
雪    币: 333
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
很给力............................
2011-1-26 18:15
0
雪    币: 291
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
此菜鸟非吾辈之菜鸟也~  
很好奇,怎样拿到的那个干净的ms.dll ...
求解答~
2011-2-2 15:09
0
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哈哈哈。蛋碎。。。。。。。。。。。
2011-2-3 13:33
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我遇到个'Safengine Protector壳,可惜没看懂。
2012-1-11 20:34
0
雪    币: 202
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
为啥有些人穿越到2012年2月了?
2012-1-11 21:33
0
雪    币: 50
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
又看见s大了哈
2012-1-11 22:31
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
E语言的静态编译
2012-8-27 14:10
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我还以为是看雪老大的safewe被分析了。
2012-8-27 14:21
0
游客
登录 | 注册 方可回帖
返回