软件大小: 504 KB
软件语言: 简体中文
软件类别: 国产软件 /
共享版 / 系统其它
应用平台: Win9x/NT/2000/XP
界面预览: 无
加入时间:
2003-06-05 10:00:03
下载次数: 337
推荐等级: ***
软件下载: http://count.skycn.com/softdown.php?id=12299&url=http://js-http.skycn.net/down/ERKing.exe
联
系 人: stephen9602@sina.com
开 发 商: http://lmj9602.tongtu.net/
软件介绍:
资源提取王是一款国产软件,比起其它国内外同类的产品,它安装后的体积少了一倍以上,功能却非常强大。主要有以下一些特征:1.从程序、屏幕保护、库文件、DLL、OCX等数十种文件中提取几乎任何资源,如光标、图标、位图、对话框、菜单、wav、mid、jpg、avi等。2.可自定义搜索路径,资源提取王将自动按照你的设置查找并提取资源,以及自动将资源存盘,归类管理。3.极具人性化的界面设计,让你先查看资源再决定是否提取幕范围。4.可以实时查看提取的资源。5.无需借助任何其它软件,可以浏览数十种格式资源文件,如bmp、jpg、wav、mid等。如果你是一名软件开发人员,或动画设计、图像处理专业人士,应该说本软件是为你量身定做的必不可少的得力助手,对于非专业人士也可以利用这款集娱乐性、休闲性于一体的软件来观看ico、cur、bmp、jpg、wav、mid、avi等文件。
破解工具: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
0167:00416C4E CALL
`MFC42!ord_00000B63`
0167:00416C53 PUSH
EAX
0167:00416C54 MOV EAX,[ESP+1C]
0167:00416C58
PUSH BYTE +01
0167:00416C5A PUSH
EDI
0167:00416C5B MOV
EDI,[0041A000]
0167:00416C61 PUSH DWORD
004214F0
0167:00416C66 PUSH EAX
0167:00416C67
CALL EDI
0167:00416C69 PUSH BYTE
-01
0167:00416C6B MOV ECX,EBP
0167:00416C6D
CALL `MFC42!ord_000015C4`
0167:00416C72 MOV
ECX,[EBX]
0167:00416C74 MOV
EAX,[ECX-08]
0167:00416C77 MOV
ECX,EBX
0167:00416C79 PUSH EAX
0167:00416C7A
PUSH EAX
0167:00416C7B CALL
`MFC42!ord_00000B63`
到此我们基本清楚了软件的算法,很容易就可逆推到正确的注册码:
以我的软件序列号为例(注册码只与软件序列号有关)
注册码第1部分:DA407580
^ 19820615+20=C3C273B5
注册码第2部分:BAA09560 ^ 19820615-80=A32292F5
试试行不行,填入此注册码后关闭,再重新运行,讨厌的提示窗口没有了
,标题的未注册标志没了!搞定!
Crack By ShenGe[BCG]