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

[原创]bass.dll的脱壳

2014-2-7 04:41
8107
因为手中几个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.
99fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8W2K9h3!0F1j5%4g2T1k6g2)9J5k6h3W2F1i4K6u0r3k6X3W2D9k6i4y4Q4x3V1k6U0N6K6u0C8i4K6u0r3g2r3!0G2L8s2y4Q4x3V1k6u0L8i4m8G2M7Y4c8Q4x3U0f1J5x3q4u0q4b7$3!0F1M7%4c8J5N6h3y4@1L8%4u0Q4x3U0f1J5x3s2j5I4i4K6u0W2y4$3k6Q4x3X3f1%4P5R3`.`.
ucfrlx10a.zip ReloX
d6cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0t1I4z5q4)9J5k6e0S2Q4x3X3f1J5y4o6g2Q4x3X3f1J5x3U0W2Q4x3@1p5I4x3U0p5J5i4K6u0r3N6r3!0G2L8s2y4Q4x3V1k6b7c8g2)9#2k6Y4c8G2L8$3I4K6i4K6u0r3M7X3g2D9L8$3y4S2N6r3W2G2L8Y4y4Q4x3V1k6d9k6h3I4G2P5q4)9J5c8Y4g2U0k6Y4u0D9P5o6p5H3j5g2)9J5k6i4A6A6M7l9`.`.
Fixing DLL Relocations Using ReloX.rar ReloX_Help_GUI
http://bbs.pediy.com/attachment.php?attachmentid=68461&d=1340349669
参考文章:
初学者用软件脱壳基础教程 【介绍了下壳,及脱壳技巧(找OEP技巧)】57dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4J5x3e0M7K6i4K6u0W2j5$3!0E0i4K6u0r3K9s2c8E0L8q4)9J5c8U0M7%4y4o6k6Q4y4h3j5I4i4K6u0W2K9s2c8E0L8l9`.`.
用 PE Tools 的修复重定位插件快速修复 DLL 的重定位表 【讲述了Import REConstructor的用法】538K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4m8W2k6r3W2&6i4K6u0W2j5$3!0E0i4K6u0r3K9%4y4K6k6q4)9J5c8Y4m8W2k6r3W2&6x3o6S2Q4x3V1k6H3k6h3c8A6P5e0S2Q4x3X3b7#2x3U0g2Q4x3X3g2Z5N6r3@1`.
用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。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 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
雪    币: 5248
活跃值: (6058)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
HGE是开源,但是其依赖的音频库BASS.DLL不开源,只提供了DLL文件,且加了壳。
2014-2-7 19:25
0
雪    币: 5248
活跃值: (6058)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
就是初学脱壳嘛,不怎么会
2014-2-7 19:26
0
游客
登录 | 注册 方可回帖
返回