CHHSun 发表于 2009-5-14 10:55

飓风加密V9.0加密文件破解

本帖最后由 CHHSun 于 2009-9-30 11:36 编辑

声明:本破解记录只做学习用,不的用于非法用途。

经过测试9.0-9.7版的解码找法差不多,都在同一位置,只要能想法到达 yaomediakj1jf (想法改跳过就是)这个位置下面一样。
关于智能防反录具体没测试。
10.0新版又出来,和9X版的完全不一样了。

飓风加密V9.0加密文件破解-让他播放。
8.0的区别在于,8.0的是8位密码,9.0的是18位密码,如果密码正确在生成8位密码在内存中解码。由于此加密方法是一机一码制,这里只记录个方法。
破解这个加密东东,我是自加自破,和生成的密码没有多大关系。


壳MoleBox v2.0 *就不脱了,但要走到OEP,好找字符串。

输入假码,18位,这里我们直接来搞吧,就是有点麻烦,改好多跳。


-----------------
开始吧,
到OEP后,查找字符串找到

004684EC   mov   eax, 00468A0C                     播放授权不合法!
004684FB   mov   eax, 00468A28                     播放授权不正确!
00468581   push    00468A44                        yaomediakj1jf   ;在这双击,找到头下硬件执行断点
00468650   mov   eax, 00468A5C                     播放密码不正确
00468675   push    00468A74                        c:\china-drm\
004686B4   push    00468A8C                        .ini
00468765   mov   eax, 00468A5C                     播放密码不正确
004687DD   push    00468A9C                        yaomediakj2jf
004688D8   mov   eax, 00468A5C                     播放密码不正确
004688E9   mov   edx, 00468AB4                     ok
0046893B   mov   edx, 00468AC0                     0
00468B3F   push    00468D8C                        yaomediakj3jf    ;在这双击,找到头下硬件执行断点
00468C4A   mov   edx, 00468DA4                     0
00468CD1   mov   edx, 00468DB0                     c
00468DBF   mov   eax, 00468DE8                     确信要退出吗?
00468E02   mov   edx, 00468E1C                     ok

----------------
第一个断点

0046830B    51            push    ecx                ; 以防退出下个硬件执行断点
0046830C    53            push    ebx
0046830D    56            push    esi
0046830E    57            push    edi

第二个断点
00468AD7    53            push    ebx                ; 在这F2
00468AD8    56            push    esi
00468AD9    57            push    edi


下完这两个断点,F9运行,输入假码111111111111111111,18位,(如果是出现其它错误。把出错CALL,NOP掉,如果前两位是9d的话可能不会出错)

确定,断下,F8单步向下走

0046830B    51            push    ecx                              ; 第一个断在这里。
0046830C    53            push    ebx
0046830D    56            push    esi
0046830E    57            push    edi
0046830F    8BF0            mov   esi, eax
00468311    33C0            xor   eax, eax
00468313    55            push    ebp
00468314    68 DA894600   push    004689DA
00468319    64:FF30         push    dword ptr fs:
0046831C    64:8920         mov   dword ptr fs:, esp
0046831F    8D45 DC         lea   eax, dword ptr
00468322    E8 99C4F9FF   call    004047C0
00468327    8D95 0CFEFFFF   lea   edx, dword ptr
0046832D    8B86 08030000   mov   eax, dword ptr
00468333    E8 0444FDFF   call    0043C73C
00468338    8B85 0CFEFFFF   mov   eax, dword ptr
0046833E    8D55 FC         lea   edx, dword ptr
00468341    E8 FE05FAFF   call    00408944
00468346    8D95 08FEFFFF   lea   edx, dword ptr
0046834C    8B45 FC         mov   eax, dword ptr
0046834F    E8 A003FAFF   call    004086F4
00468354    8B95 08FEFFFF   mov   edx, dword ptr
0046835A    8B45 FC         mov   eax, dword ptr
0046835D    E8 6AC8F9FF   call    00404BCC                  ;这个CALL是关键CALL,调用了好多次,看了下里面也没的改。
00468362    0F84 99000000   je      00468401                  ;这个JE如果不跳,就不管他(根据自己输入的假码,有时不跳但后面有出错的地方),跳的话就NOP掉
-------------


004683E2    FF57 0C         call    dword ptr                 ; 走到这里出错,NOP掉,F8继续
004683E5    8B95 F8FDFFFF   mov   edx, dword ptr
004683EB    B8 7CFC4600   mov   eax, 0046FC7C
004683F0    E8 1FC4F9FF   call    00404814
004683F5    8BC3            mov   eax, ebx
004683F7    E8 74B6F9FF   call    00403A70
004683FC    E9 10010000   jmp   00468511
-----------------

解码的前2位出现的地方
00468649    E8 7EC5F9FF   call    00404BCC                         ; 走到这里看寄存器的,EDX EAX值。
0046864E    74 0F         je      short 0046865F
00468650    B8 5C8A4600   mov   eax, 00468A5C                  ; 播放密码不正确
00468655    E8 AA3BFCFF   call    0042C204
0046865A    E9 F4020000   jmp   00468953
0046865F    8B86 04030000   mov   eax, dword ptr

寄存器:
EAX 00B6A6E4 ASCII "d645920e395fedad7bbbed0eca3fe2e0"    真码
ECX 00000000
EDX 00B64358 ASCII "d41d8cd98f00b204e9800998ecf8427e"    假码

1、真码用MD5计算器算出,或是到www.cmd5.com去查,
2、不用查也行啦,看堆栈

0012EC70   00000000
0012EC74   00B6AFECASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0"
0012EC78   00B67174ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0cyaomediakj1jf"
0012EC7C   00B642ACASCII "8564936DF050B172D434C663AD00BA7680609432A453B47382619267F706E472D5309261A652B02089668E64F602B1758331C763F54EB57889609B60A406E671D27BC23BF906E628D069C965FE05"
0012EC80   00B6A7C0ASCII "8564936df050b172d434c663ad00ba7680609432a453b47382619267f706e472d5309261a652b02089668e64f602b1758331c763f54eb57889609b60a406e671d27bc23bf906e628d069c965fe05"
0012EC84   00B6A884ASCII "402418d21ca661ebe3e512fe2d30dfe6"
0012EC88   00B6A8B4ASCII "40"                                 ;这个40就是8位授权码的前2位了。
0012EC8C   00B6AC40ASCII "d215212a8d-0ba3423d7a-798b840ed0"
0012EC90   00B6AC70ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0"
0012EC94   00B6ACC0ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0"


8位的前2位解码
40
------------------
F8一步,这个JE要跳过错误。


0046864E    74 0F         je      short 0046865F                   ;JMP
00468650    B8 5C8A4600   mov   eax, 00468A5C                  ; 播放密码不正确
00468655    E8 AA3BFCFF   call    0042C204
0046865A    E9 F4020000   jmp   00468953
0046865F    8B86 04030000   mov   eax, dword ptr

------------
F8,继续

00468774    8B45 F0         mov   eax, dword ptr
00468777    8B55 EC         mov   edx, dword ptr
0046877A    E8 4DC4F9FF   call    00404BCC
0046877F    0F85 CE010000   jnz   00468953                         ; 不能跳,NOP掉
00468785    8D95 84FDFFFF   lea   edx, dword ptr
0046878B    8B45 F8         mov   eax, dword ptr
0046878E    E8 CD210000   call    0046A960
-----------

004688D1    E8 F6C2F9FF   call    00404BCC                         ; 方法和前2位的找法一样。
004688D6    74 0C         je      short 004688E4                   ;JMP跳过错误
004688D8    B8 5C8A4600   mov   eax, 00468A5C                  ; 播放密码不正确
004688DD    E8 2239FCFF   call    0042C204
004688E2    EB 6F         jmp   short 00468953
004688E4    A1 C0E04600   mov   eax, dword ptr
004688E9    BA B48A4600   mov   edx, 00468AB4                  ; ok

看堆栈最直接
0012EC48   00B681A0ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0"
0012EC4C   00B68230ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0cyaomediakj2jf"
0012EC50   00B690DCASCII "8564936DF050B172D434C663AD00BA7680609432A453B47382619267F706E472D5309261A652B02089668E64F602B1758331C763F54EB57889609B60A406E671D27BC23BF906E628D069C966FE05"
0012EC54   00B68618ASCII "8564936df050b172d434c663ad00ba7680609432a453b47382619267f706e472d5309261a652b02089668e64f602b1758331c763f54eb57889609b60a406e671d27bc23bf906e628d069c966fe05"
0012EC58   00B6828CASCII "8babcd01dfe29a30096c15c5fe813506"
0012EC5C   00B60874ASCII "8babcd01dfe29a"
0012EC60   00B6A714ASCII "e29a"


3-6位
e29a

---------------------
F8一步,JE要跳过错误。和前2位的改法一样。
----------
F8,

004688E9    BA B48A4600   mov   edx, 00468AB4                  ; ok
004688EE    E8 21BFF9FF   call    00404814
004688F3    8B55 EC         mov   edx, dword ptr
004688F6    8B45 F0         mov   eax, dword ptr
004688F9    E8 6EFEF9FF   call    0040876C
004688FE    85C0            test    eax, eax
00468900    75 51         jnz   short 00468953                   ; 不让他跳,NOP
00468902    A1 6CFC4600   mov   eax, dword ptr
00468907    E8 90FFFEFF   call    0045889C

----------------
F9运行一下,中断在我们下的第二个断点,F8单步向下走
00468BE1    E8 E6BFF9FF   call    00404BCC                         ; 到这里,看堆栈,和前面一样的找法,这是最后2位
00468BE6    0F95C3          setne   bl
00468BE9    84DB            test    bl, bl
00468BEB    74 11         je      short 00468BFE


堆栈
0012F838   00000000
0012F83C   00B67174ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0"
0012F840   00B6ADA0ASCII "4f09d333e6e79c871b7f00623c13cef3d215212a8d-0ba3423d7a-798b840ed0cyaomediakj3jf"
0012F844   00B6ADFCASCII "8564936DF050B172D434C663AD00BA7680609432A453B47382619267F706E472D5309261A652B02089668E64F602B1758331C763F54EB57889609B60A406E671D27BC23BF906E628D069C967FE05"
0012F848   00B6AEA8ASCII "8564936df050b172d434c663ad00ba7680609432a453b47382619267f706e472d5309261a652b02089668e64f602b1758331c763f54eb57889609b60a406e671d27bc23bf906e628d069c967fe05"
0012F84C   00B6AF54ASCII "272fad6cb26d70ee21ece79d68daa0b4"
0012F850   00B6A768ASCII "272fad6cb26d70ee21ece79d"
0012F854   00B6AD00ASCII "9d"


7-8位
9d
---------------

40e29a9d这就是视频解码用的,不是要输入的播放密码。

下面我们把他放入内存让他解码播放,关键是地方,这个地方也是我在用正确注册码跟的时候发现的,才想到用这个方法
(前段时间没想到)

重新载入程序,输入假码,确定后中断在第一个断点上。F8单步

0046835D    E8 6AC8F9FF   call    00404BCC
00468362    0F84 99000000   je      00468401                         ; 不能跳,nop掉
00468368    8D95 00FEFFFF   lea   edx, dword ptr
0046836E    8B45 FC         mov   eax, dword ptr
00468371    E8 7E03FAFF   call    004086F4

---------
F8,要注意了,读授权码解码的地方快到了


0046835D    E8 6AC8F9FF   call    00404BCC
00468362    90            nop                                    ; 不能跳,nop掉
00468363    90            nop
00468364    90            nop
00468365    90            nop
00468366    90            nop
00468367    90            nop
00468368    8D95 00FEFFFF   lea   edx, dword ptr
0046836E    8B45 FC         mov   eax, dword ptr
00468371    E8 7E03FAFF   call    004086F4
00468376    8B85 00FEFFFF   mov   eax, dword ptr
0046837C    8D95 04FEFFFF   lea   edx, dword ptr
00468382    E8 D9250000   call    0046A960                        ;走到这里要注意了
00468387    8B95 04FEFFFF   mov   edx, dword ptr           ;过了上面的CALL,这就是解码的地方
0046838D    B8 7CFC4600   mov   eax, 0046FC7C
00468392    E8 7DC4F9FF   call    00404814
00468397    B2 01         mov   dl, 1
00468399    A1 64604100   mov   eax, dword ptr
0046839E    E8 9DB6F9FF   call    00403A40
004683A3    BA F4894600   mov   edx, 004689F4                  ;
004683A8    A1 7CFC4600   mov   eax, dword ptr
004683AD    E8 EA350000   call    0046B99C



把00B682EC的值?睧卹揚?改为   40e29a9d
00B682DC00 00 00 00 1A 00 00 00 01 00 00 00 09 00 00 00..............
00B682EC2C 34 30 65 32 39 61 39 64 00 00 00 1A 00 00 00,40e29a9d......
00B682FC01 00 00 00 0B 00 00 00 53 74 61 74 69 63 54 65... ...StaticTe
00B6830C78 74 31 00 1E 02 00 00 54 34 43 00 D0 46 B6 00xt1...T4C.蠪?
00B6831C04 83 B6 00 00                                 兌...

F9运行,程序开始解码播放。
OK了。

hexieh 发表于 2009-5-14 11:36

16进制码吗??

孩爸也破解 发表于 2009-5-14 14:30

很详细学习下

CHHSun 发表于 2009-5-16 19:36

:funk:支持国软,有些地方说的比较模呼,特别是最后,
还有破他的防反录,V9。5的还是智能防反录的,没贴出来!支持国软!!:loveliness:

Hmily 发表于 2009-5-17 02:01

那就不写名字贴,哈哈~

z312170878 发表于 2009-5-17 02:19

不错,我来看看了

gxkm 发表于 2009-5-19 10:26

本帖最后由 wgz001 于 2009-6-8 23:08 编辑

**** Hidden Message *****

PS:投诉请找软件作者!!!

105165 发表于 2009-5-22 17:42

那个JS的确可恶,QQ跟它再多说,就威胁要拉黑!!!

105165 发表于 2009-5-22 18:30

本帖最后由 105165 于 2009-5-22 18:33 编辑

备案/许可证号: 京ICP备05034034号
审核通过时间: 2005-07-06
单位名称: 吴薇
单位性质: 个人

虽然冠“中国”2字,实为个人所为。
这个冠名显然合法?

温柔 发表于 2009-5-25 00:25

声明:本破解记录只做学习用,不的用于非法干坏事。

命令里dd 00B682EC来到解码的地方(我的是这个,你的可能不一样)
CHHSun 发表于 2009-5-14 10:55 http://www.52pojie.cn/images/common/back.gif



如何找这个地方?
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 飓风加密V9.0加密文件破解