首页
社区
课程
招聘
[原创]bass.dll的脱壳
发表于: 2014-2-7 04:41 7799

[原创]bass.dll的脱壳

2014-2-7 04:41
7799
因为手中几个2D游戏是用HGE写的,而HGE依赖BASS.DLL,而BASS.DLL又是加了壳的,PEID看是PEtite 2.x -> Ian Luck的壳。我不会脱壳啊,只是会点点逆向吧。而游戏中有有个BUG是断在BASS.DLL内的。所以希望脱之看个究竟,但是找遍网上的自动脱壳机,也没找到能脱BASS.DLL。而此BUG时而反复出现,感觉不爽,于是我做了个艰难的决定还是学下脱壳吧。昨天晚上开始看了下网上的一篇教程。这个就是压缩壳嘛,应该不难。了解了脱壳就是在找原始程序的OEP,修复IAT,修复重定位表(DLL的话)。(以上乃个人理解,可能不慎准确)。
下面说下BASS.DLL的脱壳过程:
OD装载,第二次会停在类似
1104C036 >- E9 248BFDFF     jmp     11024B5F
1104C03B  - E9 06647B6B     jmp     kernel32.Sleep
1104C040  - E9 75177E6B     jmp     kernel32.QueueUserAPC
1104C045  - E9 2AE17B6B     jmp     kernel32.WideCharToMultiByte
1104C04A  - E9 42DF7B6B     jmp     kernel32.InitializeCriticalSecti>
1104C04F  - E9 B6D47B6B     jmp     kernel32.CreateFileMappingA
1104C054  - E9 046B7D6B     jmp     kernel32.GetExitCodeThread
1104C059  - E9 2DD97B6B     jmp     kernel32.GetCurrentThread
1104C05E  - E9 AD017C6B     jmp     kernel32.FreeLibraryAndExitThrea>
1104C063  - E9 83EE7B6B     jmp     kernel32.LoadLibraryW
1104C068  - E9 02F57B6B     jmp     kernel32.GetModuleFileNameA

的地方,F7步入,到达DLL的入口点
11024B5F  /.  55            push    ebp
11024B60  |.  8BEC          mov     ebp, esp
11024B62  |.  53            push    ebx
11024B63  |.  8B5D 08       mov     ebx, dword ptr [ebp+0x8]
11024B66  |.  56            push    esi
11024B67  |.  8B75 0C       mov     esi, dword ptr [ebp+0xC]
11024B6A  |.  57            push    edi
11024B6B  |.  8B7D 10       mov     edi, dword ptr [ebp+0x10]
11024B6E  |.  85F6          test    esi, esi

VC的标准DLL基本都这样的代码。
利用OllyDump插件 DUMP出来(注意不要勾选Rebuild Import,否则后面无法修复重定位表,应该是OllyDump插件修复IAT有误造成的吧)。
用Import REConstructor v1.7f修复下OD DUMP出来文件的IAT。
用ReloX_Help_GUI.exe 加载原始的BASS.DLL及复件到两个不同的地址,用LordPE DUMP出ReloX_Help_GUI.exe进程中BASS.DLL及其复件,并记录他俩的加载地址。用ReloX加载这两个不同加载地址的DUMP文件。填好对应加载地址,得到重定位信息,用此重定位信息修复OD DUMP出来的已经过修正IAT的文件的重定位表。
最后用LordPE重建下生成的文件,给文件减肥。收官。
工具下载链接:
Import REConstructor v1.7f.7z Import REConstructor v1.7f.
http://deioncube.in/files/cw2k/Tools/Import%20REConstructor%20v1.7f.7z
ucfrlx10a.zip ReloX
http://218.8.245.229:1212/tools/PE_tools/relocations/Relox/ucfrlx10a.zip
Fixing DLL Relocations Using ReloX.rar ReloX_Help_GUI
http://bbs.pediy.com/attachment.php?attachmentid=68461&d=1340349669
参考文章:
初学者用软件脱壳基础教程 【介绍了下壳,及脱壳技巧(找OEP技巧)】http://www.cr173.com/html/7746_1.html
用 PE Tools 的修复重定位插件快速修复 DLL 的重定位表 【讲述了Import REConstructor的用法】http://www.pediy.com/kssd/pediy08/pediy8-525.htm
用Ollydbg手脱Petite V2.2加壳的DLL 【讲述了ReloX的用法】http://bbs.pediy.com/showthread.php?t=9018&highlight=fly+ReloX
最后附上:已脱壳的常见(2.3.0.3,2.4.6.0)及最新(2.4.10.0)版本的BASS.DLL。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
话说hge是开源的,你自己编译一个出来就行了吧。。。
2014-2-7 08:45
0
雪    币: 230
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
压缩壳一般利用堆栈平衡原理下 hw 断点或 bp GetProcAddress
2014-2-7 13:51
0
雪    币: 4324
活跃值: (4838)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
HGE是开源,但是其依赖的音频库BASS.DLL不开源,只提供了DLL文件,且加了壳。
2014-2-7 19:25
0
雪    币: 4324
活跃值: (4838)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
就是初学脱壳嘛,不怎么会
2014-2-7 19:26
0
游客
登录 | 注册 方可回帖
返回
//