老文章档案 · 2003 年

资源提取王V1.30简要分析

破解教程 · 暴力破解 · 2003-10-20 · 作者:ShenGe[BCG] 人气: · 出处:赢政天下整理收藏)

开 发 商: http://lmj9602.tongtu.net

破解工具:TRW2000,Pescan3.31,Windows自带计算器

作者声明:初学破解,仅作学习交流之用,失误之处敬请大侠赐教

首先用Pe-scan查了一下,是asprotect1.2x保护,用Guw脱壳,蓝屏! :o !本人脱壳水平顶多学前班,没办法,还是用老朋友TRW伺侯!

首先任意填入用户名:ShenGe[BCG] 和假码12345678-56789012("-"不须填入)

在我的机器上的软件序列号为"da407580baa09560"

下断点bpx getwindowtexta,运行程序,按F12、F10走到如下代码:

0167:00416B00 CALL `MFC42!ord_000018BE`

0167:00416B05 LEA ECX,[ESP+1C]

0167:00416B09 CALL `MFC42!ord_0000021C`

0167:00416B0E LEA ECX,[ESP+18]

0167:00416B12 MOV DWORD [ESP+2C],00

0167:00416B1A CALL `MFC42!ord_0000021C`

0167:00416B1F PUSH ECX

0167:00416B20 LEA EBP,[ESI+64]

0167:00416B23 MOV ECX,ESP

0167:00416B25 MOV [ESP+24],ESP

0167:00416B29 PUSH EBP

0167:00416B2A MOV BYTE [ESP+34],01

0167:00416B2F CALL `MFC42!ord_00000217`

<---取输入假码的前半部分"12345678"

0167:00416B34 MOV ECX,ESI

0167:00416B36 CALL 004169C0

<---此Call之后,EAX=12345678,字串值--->Hex

0167:00416B3B PUSH ECX

0167:00416B3C LEA EBX,[ESI+68]

0167:00416B3F MOV ECX,ESP

0167:00416B41 MOV [ESP+24],ESP

0167:00416B45 PUSH EBX

0167:00416B46 MOV EDI,EAX

<---EDI=EAX=12345678

0167:00416B48 CALL `MFC42!ord_00000217`

<---取输入假码的后半部分"56789012"

0167:00416B4D MOV ECX,ESI

0167:00416B4F CALL 004169C0

<---同上,EAX=56789012

0167:00416B54 LEA ECX,[EDI-20]

<---ECX=12345678-20=12345658

0167:00416B57 LEA EDI,[EAX+80]

<---EDI=56789012+80=56789092

0167:00416B5D XOR ECX,19820615

<---与19820615作或运算,作者生日?

ECX=12345658^19820615=BB6504D

0167:00416B63 LEA EAX,[ESP+1C]

0167:00416B67 PUSH ECX

0167:00416B68 PUSH DWORD 004214E4

<---004214E4中为固定串"d2f92e31"

0167:00416B6D PUSH EAX

0167:00416B6E XOR EDI,19820615

<---EDI与19820615作或运算

EDI=56789092^19820615=4FFA9687

0167:00416B74 CALL `MFC42!ord_00000B02`

<---此Call没有跟进,看寄存器结果是将上

面的Hex值BB6504转换成小写字符串"bb6504d"

0167:00416B79 PUSH EDI

0167:00416B7A LEA ECX,[ESP+28]

0167:00416B7E PUSH DWORD 004214E4

<---004214E4中为固定串"d2f92e31"

0167:00416B83 PUSH ECX

0167:00416B84 CALL `MFC42!ord_00000B02`

<---同上,返回值为"4ffa9687"

0167:00416B89 ADD ESP,BYTE +18

0167:00416B8C LEA EDI,[ESI+60]

0167:00416B8F LEA EDX,[ESP+20]

0167:00416B93 MOV ECX,EDI

0167:00416B95 PUSH BYTE +08

0167:00416B97 PUSH EDX

0167:00416B98 CALL `MFC42!ord_00001021`

0167:00416B9D MOV EAX,[EAX]

<---EAX=da407580,机器码的前半部分

0167:00416B9F MOV BYTE [ESP+2C],02

0167:00416BA4 PUSH EAX

0167:00416BA5 MOV EAX,[ESP+20]

<---EAX=bb6504d,运算后得到的值

0167:00416BA9 PUSH EAX

0167:00416BAA CALL `MSVCRT!_mbscmp`

<---关键比较1

0167:00416BB0 ADD ESP,BYTE +08

0167:00416BB3 TEST EAX,EAX

0167:00416BB5 JNZ 00416BF3

<---跳就完了

0167:00416BB7 LEA ECX,[ESP+14]

0167:00416BBB PUSH BYTE +08

0167:00416BBD PUSH ECX

0167:00416BBE MOV ECX,EDI

0167:00416BC0 CALL `MFC42!ord_0000164E`

0167:00416BC5 MOV EAX,[EAX]

<---EAX=baa09560,序列号的后部分

0167:00416BC7 MOV EDX,[ESP+18]

<---EDX=4ffa9687

0167:00416BCB PUSH EAX

0167:00416BCC PUSH EDX

0167:00416BCD CALL `MSVCRT!_mbscmp`

<---关键比较2

0167:00416BD3 ADD ESP,BYTE +08

0167:00416BD6 LEA ECX,[ESP+14]

0167:00416BDA TEST EAX,EAX

0167:00416BDC SETZ [ESP+13]

<---注意[ESP+13]中的值,由上面的比较结果而定, 后面会用到,为1则注册成功!

0167:00416BE1 CALL `MFC42!ord_00000320`

0167:00416BE6 MOV AL,[ESP+13]

<---[ESP+13]中的值赋给AL,标志位噢!

0167:00416BEA MOV BYTE [ESP+13],01

0167:00416BEF TEST AL,AL

0167:00416BF1 JNZ 00416BF8

<---记得要跳噢!

0167:00416BF3 MOV BYTE [ESP+13],00

<---置[ESP+13]中为0

0167:00416BF8 LEA ECX,[ESP+20]

0167:00416BFC MOV BYTE [ESP+2C],01

0167:00416C01 CALL `MFC42!ord_00000320`

0167:00416C06 MOV AL,[ESP+13]

0167:00416C0A TEST AL,AL

0167:00416C0C JZ NEAR 00416C9A

<---此处不能跳

0167:00416C12 LEA EAX,[ESP+20]

0167:00416C16 LEA ECX,[ESP+14]

0167:00416C1A XOR EDI,EDI

0167:00416C1C PUSH EAX

0167:00416C1D PUSH ECX

0167:00416C1E PUSH EDI

0167:00416C1F PUSH DWORD 000F003F

0167:00416C24 PUSH BYTE +01

0167:00416C26 PUSH DWORD 004225D8

0167:00416C2B PUSH EDI

0167:00416C2C PUSH DWORD 00421500

0167:00416C31 PUSH DWORD 80000000

0167:00416C36 MOV [ESP+38],EDI

0167:00416C3A MOV [ESP+44],EDI

0167:00416C3E CALL `ADVAPI32!RegCreateKeyExA`

<---写注册表

0167:00416C44 MOV EDX,[EBP+00]

0167:00416C47 MOV ECX,EBP

0167:00416C49 MOV EAX,[EDX-08]

0167:00416C4C PUSH EAX

0167:00416C4D PUSH EAX

到此我们基本清楚了软件的算法,很容易就可逆推到正确的注册码:

以我的软件序列号为例(注册码只与软件序列号有关)

注册码第1部分:DA407580 ^ 19820615+20=C3C273B5

注册码第2部分:BAA09560 ^ 19820615-80=A32292F5

试试行不行,填入此注册码后关闭,再重新运行,讨厌的提示窗口没有了

,标题的未注册标志没了!搞定!

(出处:赢政天下整理收藏)

相关文章:

·Tornado2之Licence暴力破解

·万能五笔2001注册码分析及暴力破解

·万能五笔2001注册码分析及暴力破解

·万能五笔2001注册码分析及暴力破解 ---可怜的思考者 (27千字)

·一个拨号软件的Win32Dasm暴力破解法

·CuteFTP V4.2.4之暴力破解

相关软件:

·电话卡暴力破解器 v2.0 (0425版)

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史