lyiann 发表于 2021-6-16 10:53

InnoExtractor 捐赠机制

本帖最后由 lyiann 于 2021-6-19 09:14 编辑

InnoExtractor 是什么软件,在这里不做介绍,论坛中有。
原作者发布的软件都是Free版的,只有通过捐赠才可能升级到Plus版。
网上到处都是所谓的完美破解版(本论坛也有),但其实都不是完美的,要将Free版完美升级到Plus,只有通过向作者捐赠6美元:lol,作者会通过邮箱发给你你一个捐赠码。
我们就来看看这个捐赠码的输入方式和校验机制。

1、捐赠界面会检测有无注册机在运行,有的话无法输入捐赠码:
005DD2BB      mov         eax,;^gHasKeyGen:Boolean
005DD2C0      cmp         byte ptr ,0
005DD2C3>       jnz         005DD2DB
005DD2C5      mov         eax,5DD508;'havysoft products keygen'
005DD2CA      call      GetWinHandleByTitle
005DD2CF      test      eax,eax
005DD2D1>       jbe         005DD2DB
005DD2D3      mov         eax,;^gHasKeyGen:Boolean
005DD2D8      mov         byte ptr ,1
005DD2DB      mov         eax,;^gHasKeyGen:Boolean
005DD2E0      cmp         byte ptr ,1
005DD2E3>       jz          005DD4D8; 有注册机在运行,则跳出

2、捐赠界面接收组合键Ctrl-Alt-Shift-I
捐赠界面如下:

005DD2E9      mov         ax,;0x7 gvar_005DD53C; Ctrl-Alt-Shift组合键
005DD2EF      cmp         ax,word ptr
005DD2F3>       jnz         005DD4D8;不是跳出
005DD2F9      mov         eax,dword ptr
005DD2FC      mov         ax,word ptr
005DD2FF      cmp         ax,49          ;I键的ASCII码
005DD303>       jnz         005DD4D8;不是跳出
按组合键捐赠界面变成这样,可以输入捐赠码了:


3、捐赠码的组成
00565C44      mov         edx,dword ptr
00565C47      mov         eax,565D2C;'-'
00565C4C      call      ReversePos
00565C51      mov         dword ptr ,eax
00565C54      cmp         dword ptr ,0
00565C58>       jle         00565CEC
捐赠码分两个部分,中间用“-”分隔,第一部分是名称,第二部分是由名称产生的校验码。

4、名称的有效性
.text:005659B4 C6 45 FB 00                      mov   , 0
.text:005659B8 8D 55 F4                     lea   edx,
.text:005659BB 8B 45 FC                     mov   eax,
.text:005659BE E8 0D 87 EB FF                   call    AnsiLowerCase
.text:005659C3 8B 45 F4                     mov   eax,
.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   , 1
.text:005659D6
.text:005659D6                   loc_5659D6:
.text:005659D6 80 7D FB 01                     cmp   , 1
.text:005659DA 0F 84 7E 01 00 00               jz      Exit
如果名称是“unregistereduser”,则不可接收,废话!{:1_918:}

.text:00565A01 C7 45 F0 01 00 00+                  mov   , 1
.text:00565A08
.text:00565A08                   loc_565A08:
.text:00565A08 8B 45 F4                        mov   eax,
.text:00565A0B 8B 55 F0                        mov   edx,
.text:00565A0E 66 8B 44 50 FE                  mov   ax,
.text:00565A13 66 89 45 EE                      mov   , ax
.text:00565A17 B8 BC 5B 56 00                  mov   eax, offset dword_565BBC
.text:00565A1C 89 45 D8                        mov   , eax
.text:00565A1F 8B 45 D8                        mov   eax,
.text:00565A22 66 8B 55 EE                      mov   dx,
.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      , edx
.text:00565A36
.text:00565A36                   loc_565A36:
.text:00565A36 0F 92 C0                        setb    al
.text:00565A39 88 45 D7                        mov   , al
.text:00565A3C 80 7D D7 00                      cmp   , 0
.text:00565A40 75 09                        jnz   short loc_565A4B
.text:00565A42 C6 45 FB 01                      mov   , 1
.text:00565A46 E9 13 01 00 00                  jmp   Exit
.text:00565A4B                   ; ---------------------------------------------------------------------------
.text:00565A4B
.text:00565A4B                   loc_565A4B:
.text:00565A4B FF 45 F0                        inc   
.text:00565A4E FF 4D E0                        dec   
.text:00565A51 75 B5                        jnz   short loc_565A08
这是个For循环,检测名称是否都是由字母组成,有非字母则视为无效!


.text:00565A84 C7 45 F0 01 00 00+                  mov   , 1
.text:00565A8B
.text:00565A8B                   loc_565A8B:
.text:00565A8B 8B 45 F4                         mov   eax,
.text:00565A8E 8B 55 F0                         mov   edx,
.text:00565A91 66 8B 44 50 FE                     mov   ax,
.text:00565A96 66 89 45 EE                     mov   , ax
.text:00565A9A 66 8B 45 EE                     mov   ax,
.text:00565A9E 66 89 45 CE                     mov   , ax
.text:00565AA2 66 8B 45 EE                     mov   ax,
.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,
.text:00565AB3 66 25 DF FF                     and   ax, 0FFDFh
.text:00565AB7 66 89 45 CE                     mov   , ax
.text:00565ABB
.text:00565ABB                   loc_565ABB:
.text:00565ABB 66 8B 45 EE                     mov   ax,
.text:00565ABF 66 3B 45 CE                     cmp   ax,
.text:00565AC3 75 03                           jnz   short loc_565AC8
.text:00565AC5 FF 45 E8                         inc   ;大写字母计数
.text:00565AC8
.text:00565AC8                   loc_565AC8:
.text:00565AC8 FF 45 F0                         inc   
.text:00565ACB FF 4D E0                         dec   
.text:00565ACE 75 BB                           jnz   short loc_565A8B
.text:00565AD0                   loc_565AD0:
.text:00565AD0 83 7D E8 02                     cmp   , 2;小于2个无效
.text:00565AD4 7C 06                           jl      short loc_565ADC
.text:00565AD6 83 7D E8 04                     cmp   , 4;大于4个无效
.text:00565ADA 7E 06                           jle   short loc_565AE2
.text:00565ADC
.text:00565ADC                   loc_565ADC:
.text:00565ADC C6 45 FB 01                     mov   , 1
.text:00565AE0 EB 7C                           jmp   short Exit
这又是个for循环,检测大写字母的个数,大写字母在2-4个范围内是有效的。

.text:00565B08 C7 45 F0 01 00 00+                   mov   , 1
.text:00565B0F
.text:00565B0F                   loc_565B0F:
.text:00565B0F 8B 45 F4                        mov   eax,
.text:00565B12 8B 55 F0                        mov   edx,
.text:00565B15 66 8B 44 50 FE                      mov   ax,
.text:00565B1A 66 89 45 EE                        mov   , ax
.text:00565B1E B8 DC 5B 56 00                      mov   eax, offset dword_565BDC
.text:00565B23 89 45 C4                        mov   , eax
.text:00565B26 8B 45 C4                        mov   eax,
.text:00565B29 66 8B 55 EE                        mov   dx,
.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      , edx
.text:00565B3D
.text:00565B3D                   loc_565B3D:
.text:00565B3D 0F 92 C0                        setb    al
.text:00565B40 88 45 C3                        mov   , al
.text:00565B43 80 7D C3 00                        cmp   , 0
.text:00565B47 74 03                            jz      short loc_565B4C
.text:00565B49 FF 45 E4                        inc   ;元音字母计数
.text:00565B4C
.text:00565B4C                   loc_565B4C:
.text:00565B4C FF 45 F0                        inc   
.text:00565B4F FF 4D E0                        dec   
.text:00565B52 75 BB                            jnz   short loc_565B0F
.text:00565B54
.text:00565B54                   loc_565B54:
.text:00565B54 83 7D E4 02                     cmp   , 2;小于2个无效
.text:00565B58 7D 04                           jge   short Exit
.text:00565B5A C6 45 FB 01                     mov   , 1
.text:00565B5E
.text:00565B5E                   Exit:
这还是个for循环,检测元音字母的个数,必须2个以上有效。


结论:名称必须全部由字母组成,并且含2-4个大写字母和不少于2个元音字母。


5、校验码
校验码由名称通过计算CRC32得到,作者在程序中有个Bug,是由Ansi字符程序转到Unicode字符程序时留下的。
目前程序是Unicode字符的,名称的每个字母由两个字节组成,但在计算时又按Ansi方式进行,这样只计算了名称的一半,每个字母多出的字节0也进行了计算。
因此我们只能讲错就错!{:1_925:}
计算得到的CRC32码,转换成8位十六进制值,就是校验码了。

6、提供一枚捐赠码玩玩
PoJie-022ED495
在上个界面输入这个捐赠码,出现如下感谢信息:


7、好了,到此,Free版真正完美升级到了Plus版!



8、为好事者准备的礼物!
有好事者将原作者的软件进行汉化破解,再包装。
现在破解不必了,还是原汁原味用原作者的东西吧!
进行汉化包装,执行以下注册表代码,Free版就是Plus版了!
Windows Registry Editor Version 5.00




"IE1942781259513"="PoJie-022ED495"


这是我做的捐赠码产生器,没啥必要发布了,除非原作者将PoJie名称也加入非法名称!:lol:lol

强调:
组合键必须在捐赠界面输入才起作用!

按组合键方式:先按住Ctrl、Alt和Shift三个键,再按I键。


组合按键是:Ctrl-Alt-Shift-I

Juno_Jr 发表于 2021-6-16 16:40

本帖最后由 Juno_Jr 于 2022-11-25 19:52 编辑

快捷键:Ctrl+Alt+Shift+I


更新:6.0
快捷键:Ctrl+Shift+Y
注册码:PoJie-2A9AF173
    CrackeR-5CD27B64

lyiann 发表于 2021-6-16 17:16

Juno_Jr 发表于 2021-6-16 16:40
快捷键Ctrl-Alt-Shift-I

是的是的,我按键一直这样按的,但写的时候写成T了

腊肉白菜 发表于 2021-6-16 11:17

本帖最后由 腊肉白菜 于 2021-6-16 11:33 编辑

哪位小伙伴能告知一下,是否有其他方法输入捐赠码,或如何调出捐赠码界面。
安装使用官方v5.4.5.202版本,在捐赠界面按组合键Ctrl-Alt-Shift-T,死活出不来捐赠码输入界面。已确认没开注册机。

———————————————————————————————————————————

压缩包见附件。使用方法如下:
1、将压缩包解压;
2、将解压出的“Chinese.lng”文件,放进软件安装目录下的“Languages”文件夹下
3、重启软件;
4、在软件界面上方选择“Options”-“Languages”-“Chinese Simplified(简体中文)”即可。

lyiann 发表于 2021-6-16 17:27

腊肉白菜 发表于 2021-6-16 12:18
确认了几次,的确是在这个界面按的Ctrl-Alt-Shift-T,不知道为啥,就是出不来
把火绒、输入法之类的都关 ...
不好意思,写错了,组合键是
Ctrl-Alt-Shift-I

husky9527 发表于 2021-6-16 11:14

福利啊占个楼打破零回复

lyiann 发表于 2021-6-16 11:53

腊肉白菜 发表于 2021-6-16 11:17
哪位小伙伴能告知一下,是否有其他方法输入捐赠码,或如何调出捐赠码界面。
安装使用官方v5.4.5.202版本, ...

直接执行那个注册表代码,或按代码直接加入注册表:lol

lyiann 发表于 2021-6-16 12:01

本帖最后由 lyiann 于 2021-6-16 12:03 编辑

腊肉白菜 发表于 2021-6-16 11:17
哪位小伙伴能告知一下,是否有其他方法输入捐赠码,或如何调出捐赠码界面。
安装使用官方v5.4.5.202版本, ...
组合键一定要在捐赠界面输入

腊肉白菜 发表于 2021-6-16 12:12

lyiann 发表于 2021-6-16 11:53
直接执行那个注册表代码,或按代码直接加入注册表

bat执行了没效果,注册表没有ZHS路径,添加了一个也不行
:sleepy:尴尬

腊肉白菜 发表于 2021-6-16 12:18

lyiann 发表于 2021-6-16 12:01
组合键一定要在捐赠界面输入

确认了几次,的确是在这个界面按的Ctrl-Alt-Shift-T,不知道为啥,就是出不来
把火绒、输入法之类的都关了,也不像是热键冲突

Rx0 发表于 2021-6-16 13:18

谢谢分享,我的按热键也没有出来输入界面。直接用注册表搞定。

lyiann 发表于 2021-6-16 13:40

本帖最后由 lyiann 于 2021-6-16 13:42 编辑

腊肉白菜 发表于 2021-6-16 12:12
bat执行了没效果,注册表没有ZHS路径,添加了一个也不行
尴尬
保存为“.reg”文件,而不是“.bat”文件
注册表不是添加一个ZHS路径,还要添加相关的项和值

Hmily 发表于 2021-6-16 15:06

学习了,以前分析的时候确实找了很长时间怎么输入验证码,最后从限制下手了。
页: [1] 2 3 4 5 6 7
查看完整版本: InnoExtractor 捐赠机制