欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

MoleBox Pro 2.6.5捆绑的强加密数据文件提取方法

程序员文章站 2022-03-16 16:22:04
有一些东西是用这款软件捆绑的,所以有必要探究一下其中的奥秘。通过这几天的探索,终于实现了提取的方法,不敢独自享用,写出来和大家分享一下,以证明在2010年没有虚度光阴。研究的重点是捆绑数据的提...

有一些东西是用这款软件捆绑的,所以有必要探究一下其中的奥秘。通过这几天的探索,终于实现了提取的方法,不敢独自享用,写出来和大家分享一下,以证明在2010年没有虚度光阴。研究的重点是捆绑数据的提取。大概原理如下:在用MoleBox Pro 2.6.5加壳后的文件如果捆绑了加强密的数据,那么在文件尾部有些数据解密后会知道捆绑了哪些文件,并且在文件内的什么位置,有多大,这时候提取出来的数据是加了密的,必须解密方可还原原始数据。主要难点在于:
1、这个解密密钥是什么,在哪里?
2、解密算法是什么?
3、如何定位捆绑文件在加壳程序中的位置?

MoleBox Pro 2.6.5捆绑的强加密数据文件提取方法

MoleBox Pro 2.6.5捆绑的强加密数据文件提取方法

MoleBox Pro 2.6.5捆绑的强加密数据文件提取方法

    下面具体分析:
   一、解决文件的定位问题:随便用狂牛视频加密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};蟸?