好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 lyiann 于 2021-6-19 09:14 编辑
InnoExtractor 是什么软件,在这里不做介绍,论坛中有。
原作者发布的软件都是Free版的,只有通过捐赠才可能升级到Plus版。
网上到处都是所谓的完美破解版(本论坛也有),但其实都不是完美的,要将Free版完美升级到Plus,只有通过向作者捐赠6美元,作者会通过邮箱发给你你一个捐赠码。
我们就来看看这个捐赠码的输入方式和校验机制。
1、捐赠界面会检测有无注册机在运行,有的话无法输入捐赠码:
005DD2BB mov eax,[0060DBC8];^gHasKeyGen:Boolean
005DD2C0 cmp byte ptr [eax],0
005DD2C3> jnz 005DD2DB
005DD2C5 mov eax,5DD508;'havysoft products keygen'
005DD2CA call GetWinHandleByTitle
005DD2CF test eax,eax
005DD2D1> jbe 005DD2DB
005DD2D3 mov eax,[0060DBC8];^gHasKeyGen:Boolean
005DD2D8 mov byte ptr [eax],1
005DD2DB mov eax,[0060DBC8];^gHasKeyGen:Boolean
005DD2E0 cmp byte ptr [eax],1
005DD2E3> jz 005DD4D8; 有注册机在运行,则跳出
2、捐赠界面接收组合键Ctrl-Alt-Shift-I
捐赠界面如下:
005DD2E9 mov ax,[005DD53C];0x7 gvar_005DD53C; Ctrl-Alt-Shift组合键
005DD2EF cmp ax,word ptr [ebp+8]
005DD2F3> jnz 005DD4D8;不是跳出
005DD2F9 mov eax,dword ptr [ebp-8]
005DD2FC mov ax,word ptr [eax]
005DD2FF cmp ax,49 ;I键的ASCII码
005DD303> jnz 005DD4D8;不是跳出
按组合键捐赠界面变成这样,可以输入捐赠码了:
3、捐赠码的组成
00565C44 mov edx,dword ptr [ebp-4]
00565C47 mov eax,565D2C;'-'
00565C4C call ReversePos
00565C51 mov dword ptr [ebp-18],eax
00565C54 cmp dword ptr [ebp-18],0
00565C58> jle 00565CEC
捐赠码分两个部分,中间用“-”分隔,第一部分是名称,第二部分是由名称产生的校验码。
4、名称的有效性
.text:005659B4 C6 45 FB 00 mov [ebp+Result], 0
.text:005659B8 8D 55 F4 lea edx, [ebp+TmpS]
.text:005659BB 8B 45 FC mov eax, [ebp+Name]
.text:005659BE E8 0D 87 EB FF call AnsiLowerCase
.text:005659C3 8B 45 F4 mov eax, [ebp+TmpS]
.text:005659C6 BA 98 5B 56 00 mov edx, offset aUnregisteredus ; "unregistereduser"
.text:005659CB E8 54 24 EA FF call UStrEqual
.text:005659D0 75 04 jnz short loc_5659D6
.text:005659D2 C6 45 FB 01 mov [ebp+Result], 1
.text:005659D6
.text:005659D6 loc_5659D6:
.text:005659D6 80 7D FB 01 cmp [ebp+Result], 1
.text:005659DA 0F 84 7E 01 00 00 jz Exit
如果名称是“unregistereduser”,则不可接收,废话!
.text:00565A01 C7 45 F0 01 00 00+ mov [ebp+I], 1
.text:00565A08
.text:00565A08 loc_565A08:
.text:00565A08 8B 45 F4 mov eax, [ebp+TmpS]
.text:00565A0B 8B 55 F0 mov edx, [ebp+I]
.text:00565A0E 66 8B 44 50 FE mov ax, [eax+edx*2-2]
.text:00565A13 66 89 45 EE mov [ebp+var_12], ax
.text:00565A17 B8 BC 5B 56 00 mov eax, offset dword_565BBC
.text:00565A1C 89 45 D8 mov [ebp+var_28], eax
.text:00565A1F 8B 45 D8 mov eax, [ebp+var_28]
.text:00565A22 66 8B 55 EE mov dx, [ebp+var_12]
.text:00565A26 66 81 FA FF 00 cmp dx, 0FFh
.text:00565A2B 77 09 ja short loc_565A36
.text:00565A2D 81 E2 FF 00 00 00 and edx, 0FFh
.text:00565A33 0F A3 10 bt [eax], edx
.text:00565A36
.text:00565A36 loc_565A36:
.text:00565A36 0F 92 C0 setb al
.text:00565A39 88 45 D7 mov [ebp+var_29], al
.text:00565A3C 80 7D D7 00 cmp [ebp+var_29], 0
.text:00565A40 75 09 jnz short loc_565A4B
.text:00565A42 C6 45 FB 01 mov [ebp+Result], 1
.text:00565A46 E9 13 01 00 00 jmp Exit
.text:00565A4B ; ---------------------------------------------------------------------------
.text:00565A4B
.text:00565A4B loc_565A4B:
.text:00565A4B FF 45 F0 inc [ebp+I]
.text:00565A4E FF 4D E0 dec [ebp+var_20]
.text:00565A51 75 B5 jnz short loc_565A08
这是个For循环,检测名称是否都是由字母组成,有非字母则视为无效!
.text:00565A84 C7 45 F0 01 00 00+ mov [ebp+I], 1
.text:00565A8B
.text:00565A8B loc_565A8B:
.text:00565A8B 8B 45 F4 mov eax, [ebp+TmpS]
.text:00565A8E 8B 55 F0 mov edx, [ebp+I]
.text:00565A91 66 8B 44 50 FE mov ax, [eax+edx*2-2]
.text:00565A96 66 89 45 EE mov [ebp+var_12], ax
.text:00565A9A 66 8B 45 EE mov ax, [ebp+var_12]
.text:00565A9E 66 89 45 CE mov [ebp+var_32], ax
.text:00565AA2 66 8B 45 EE mov ax, [ebp+var_12]
.text:00565AA6 83 C0 9F add eax, 0FFFFFF9Fh
.text:00565AA9 66 83 E8 1A sub ax, 1Ah
.text:00565AAD 73 0C jnb short loc_565ABB
.text:00565AAF 66 8B 45 EE mov ax, [ebp+var_12]
.text:00565AB3 66 25 DF FF and ax, 0FFDFh
.text:00565AB7 66 89 45 CE mov [ebp+var_32], ax
.text:00565ABB
.text:00565ABB loc_565ABB:
.text:00565ABB 66 8B 45 EE mov ax, [ebp+var_12]
.text:00565ABF 66 3B 45 CE cmp ax, [ebp+var_32]
.text:00565AC3 75 03 jnz short loc_565AC8
.text:00565AC5 FF 45 E8 inc [ebp+CapitalCount];大写字母计数
.text:00565AC8
.text:00565AC8 loc_565AC8:
.text:00565AC8 FF 45 F0 inc [ebp+I]
.text:00565ACB FF 4D E0 dec [ebp+var_20]
.text:00565ACE 75 BB jnz short loc_565A8B
.text:00565AD0 loc_565AD0:
.text:00565AD0 83 7D E8 02 cmp [ebp+CapitalCount], 2;小于2个无效
.text:00565AD4 7C 06 jl short loc_565ADC
.text:00565AD6 83 7D E8 04 cmp [ebp+CapitalCount], 4;大于4个无效
.text:00565ADA 7E 06 jle short loc_565AE2
.text:00565ADC
.text:00565ADC loc_565ADC:
.text:00565ADC C6 45 FB 01 mov [ebp+Result], 1
.text:00565AE0 EB 7C jmp short Exit
这又是个for循环,检测大写字母的个数,大写字母在2-4个范围内是有效的。
.text:00565B08 C7 45 F0 01 00 00+ mov [ebp+I], 1
.text:00565B0F
.text:00565B0F loc_565B0F:
.text:00565B0F 8B 45 F4 mov eax, [ebp+TmpS]
.text:00565B12 8B 55 F0 mov edx, [ebp+I]
.text:00565B15 66 8B 44 50 FE mov ax, [eax+edx*2-2]
.text:00565B1A 66 89 45 EE mov [ebp+var_12], ax
.text:00565B1E B8 DC 5B 56 00 mov eax, offset dword_565BDC
.text:00565B23 89 45 C4 mov [ebp+var_3C], eax
.text:00565B26 8B 45 C4 mov eax, [ebp+var_3C]
.text:00565B29 66 8B 55 EE mov dx, [ebp+var_12]
.text:00565B2D 66 81 FA FF 00 cmp dx, 0FFh
.text:00565B32 77 09 ja short loc_565B3D
.text:00565B34 81 E2 FF 00 00 00 and edx, 0FFh
.text:00565B3A 0F A3 10 bt [eax], edx
.text:00565B3D
.text:00565B3D loc_565B3D:
.text:00565B3D 0F 92 C0 setb al
.text:00565B40 88 45 C3 mov [ebp+var_3D], al
.text:00565B43 80 7D C3 00 cmp [ebp+var_3D], 0
.text:00565B47 74 03 jz short loc_565B4C
.text:00565B49 FF 45 E4 inc [ebp+VowelCount];元音字母计数
.text:00565B4C
.text:00565B4C loc_565B4C:
.text:00565B4C FF 45 F0 inc [ebp+I]
.text:00565B4F FF 4D E0 dec [ebp+var_20]
.text:00565B52 75 BB jnz short loc_565B0F
.text:00565B54
.text:00565B54 loc_565B54:
.text:00565B54 83 7D E4 02 cmp [ebp+VowelCount], 2;小于2个无效
.text:00565B58 7D 04 jge short Exit
.text:00565B5A C6 45 FB 01 mov [ebp+Result], 1
.text:00565B5E
.text:00565B5E Exit:
这还是个for循环,检测元音字母的个数,必须2个以上有效。
结论:名称必须全部由字母组成,并且含2-4个大写字母和不少于2个元音字母。
5、校验码
校验码由名称通过计算CRC32得到,作者在程序中有个Bug,是由Ansi字符程序转到Unicode字符程序时留下的。
目前程序是Unicode字符的,名称的每个字母由两个字节组成,但在计算时又按Ansi方式进行,这样只计算了名称的一半,每个字母多出的字节0也进行了计算。
因此我们只能讲错就错!
计算得到的CRC32码,转换成8位十六进制值,就是校验码了。
6、提供一枚捐赠码玩玩
PoJie-022ED495
在上个界面输入这个捐赠码,出现如下感谢信息:
7、好了,到此,Free版真正完美升级到了Plus版!
8、为好事者准备的礼物!
有好事者将原作者的软件进行汉化破解,再包装。
现在破解不必了,还是原汁原味用原作者的东西吧!
进行汉化包装,执行以下注册表代码,Free版就是Plus版了!
[Asm] 纯文本查看 复制代码 Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\ZHS]
[HKEY_CURRENT_USER\SOFTWARE\ZHS\IE]
"IE1942781259513"="PoJie-022ED495"
这是我做的捐赠码产生器,没啥必要发布了,除非原作者将PoJie名称也加入非法名称!
强调:
组合键必须在捐赠界面输入才起作用!
按组合键方式:先按住Ctrl、Alt和Shift三个键,再按I键。
组合按键是:Ctrl-Alt-Shift-I
|
免费评分
-
查看全部评分
|