MoleBox Pro 2.6.5捆绑的强加密数据文件提取方法
有一些东西是用这款软件捆绑的,所以有必要探究一下其中的奥秘。通过这几天的探索,终于实现了提取的方法,不敢独自享用,写出来和大家分享一下,以证明在2010年没有虚度光阴。研究的重点是捆绑数据的提取。大概原理如下:在用MoleBox Pro 2.6.5加壳后的文件如果捆绑了加强密的数据,那么在文件尾部有些数据解密后会知道捆绑了哪些文件,并且在文件内的什么位置,有多大,这时候提取出来的数据是加了密的,必须解密方可还原原始数据。主要难点在于:
1、这个解密密钥是什么,在哪里?
2、解密算法是什么?
3、如何定位捆绑文件在加壳程序中的位置?
下面具体分析:
一、解决文件的定位问题:随便用狂牛视频加密v0.7.5.7加密一段视频生成的可执行文件就是一个很好的例子。在它的尾部这里是“50000000 E54E0600”,前面一个双字是大小,后面一个是文件内偏移,也就是上面画横线的50h个字节。这部分解密后会是上面的样子:划短线的分别是文件名和其对应的文件内偏移及大小。
用od载入32.exe
1005F33E 89440A 04 MOV DWORD PTR DS:[EDX+ECX+4],EAX //在此处下硬件执行断点
1005F342 E9 08FFFFFF JMP 32.1005F24F
运行后断下,edx所指向的地方就是这样,此时刚填充完88 31 8C 00,也就是被捆绑的第一个文件名的地址
008C31A1 88 31 8C 00 24 E0 05 00 C3 6D 00 00 33 00 00 00 ??$?.胢..3...
008C31B1 07 00 00 00 EB 4D 06 00 D6 00 00 00 33 00 00 00 ...隡.?..3...
008C31C1 10 00 00 00 C9 4E 06 00 14 00 00 00 33 00 00 00 ...蒒....3...
这里要连续断下3次,因为捆绑了3个文件需要填充3次,除了文件名地址没有填其他数据都是刚才从尾部那个50h字节数据解密而来。现在你可以根据这里的一段数据提取出来所有捆绑的文件,但是其数据还需解密。
二、解决密钥来源的问题:
大致先读取文件内某处的数据,而后经过若干次解密运算得到,比较复杂。
通过调试发现来最初之于代码段57000的偏移1c3c处,也就是文件内偏移4f000+1c3c=50C3C的地方。
10058C3C 43 0A 0B 1A 01 72 7B 04 54 5B 3A 74 F1 32 45 1D C.r{T[:t?E
10058C4C F0 07 10 D3 C9 D2 8F 1E 2E C9 E8 EB 43 AF A7 6F ?由覐.设隒?o
10058C5C 74 8F 78 68 A0 51 8F 7B A0 2E 72 6F 97 65 AA 05 t弜h燪弡?ro梕?
10058C6C 3C 84 A0 E9 59 CF 36 68 A1 DC 3E F7 DA D4 90 23 <劆閅?h≤>髭詯#
10058C7C A6 EC F0 3B DF AF 32 65 7D 3B CF 7E FB FA FF 7B ??忒2e};蟸?
上一篇: 自动化代码审计