锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
[原创] 泽文堂天心正运内存注册机及劫持patch

作者: lmze2000  日期:2017-05-19 07:47:53   来源: 本站整理

 泽文堂天心正运内存注册机及劫持patch

0x01、初步分析
前段时间学习了南方系列的注册算法,这次给大家带来了泽文堂的天心正运图软件,PEID扫描,是Delphi无壳的。降低了一半的难度。
通过运行软件,得知在没有注册的时候,会限制时间在2016-12-31日,之后的日期无法进行推演。同时该款软件是KeyFile的注册模式。
软件通过读取zwtsoft.ini的注册信息完成注册。


 


0x02、注册分析
由于知道是通过KeyFile来进行注册,我们搜索字符串,找到zwtsoft.ini处下断点,也可以下读取、创建文件的api断点。
 

[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
0051AFB1    BA 58B25100     mov edx,CrackZWT.0051B258               ; zwtsoft.ini
0051AFB6    E8 6D9AEEFF     call CrackZWT.00404A28
0051AFBB    8B4D FC         mov ecx,dword ptr ss:[ebp-0x4]
0051AFBE    B2 01           mov dl,0x1
0051AFC0    A1 C8134400     mov eax,dword ptr ds:[0x4413C8]
0051AFC5    E8 AE64F2FF     call CrackZWT.00441478
0051AFCA    A3 C8995200     mov dword ptr ds:[0x5299C8],eax
0051AFCF    8D55 F4         lea edx,dword ptr ss:[ebp-0xC]
0051AFD2    B8 6CB25100     mov eax,CrackZWT.0051B26C               ; ID1
0051AFD7    E8 A0FBFFFF     call CrackZWT.0051AB7C                  ; 这是读ini的ID1,一会修改里面的内容,。。。
0051AFDC    8B45 F4         mov eax,dword ptr ss:[ebp-0xC]
0051AFDF    50              push eax
0051AFE0    8D45 F0         lea eax,dword ptr ss:[ebp-0x10]
0051AFE3    E8 7868F6FF     call CrackZWT.00481860                  ; ID2读取
0051AFE8    8B55 F0         mov edx,dword ptr ss:[ebp-0x10]
0051AFEB    58              pop eax
0051AFEC    E8 4BFCFFFF     call CrackZWT.0051AC3C                  ; 关键算法Call.....Call里面有大量的计算及断点
0051AFF1    8BD0            mov edx,eax
0051AFF3    8B03            mov eax,dword ptr ds:[ebx]




机器码的长度为6段24位长度,
 

[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
0051A98C    55              push ebp                                ; 这个Call的段首,,在此Call中,开始注册码的相关计算工作。重点关注。
0051A98D    8BEC            mov ebp,esp
0051A98F    83C4 9C         add esp,-0x64
0051A992    53              push ebx
0051A993    33C9            xor ecx,ecx
0051A995    894D 9C         mov dword ptr ss:[ebp-0x64],ecx
0051A998    894D A0         mov dword ptr ss:[ebp-0x60],ecx
0051A99B    8BDA            mov ebx,edx
0051A99D    8945 FC         mov dword ptr ss:[ebp-0x4],eax
0051A9A0    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
0051A9A3    E8 68A2EEFF     call CrackZWT.00404C10
0051A9A8    33C0            xor eax,eax
0051A9AA    55              push ebp
0051A9AB    68 27AA5100     push CrackZWT.0051AA27
0051A9B0    64:FF30         push dword ptr fs:[eax]
0051A9B3    64:8920         mov dword ptr fs:[eax],esp
0051A9B6    8D45 A4         lea eax,dword ptr ss:[ebp-0x5C]
0051A9B9    E8 A6FEFFFF     call CrackZWT.0051A864
0051A9BE    8D45 A0         lea eax,dword ptr ss:[ebp-0x60]
0051A9C1    B9 3CAA5100     mov ecx,CrackZWT.0051AA3C               ; gxcwljnxz
0051A9C6    8B55 FC         mov edx,dword ptr ss:[ebp-0x4]
0051A9C9    E8 9EA0EEFF     call CrackZWT.00404A6C
0051A9CE    8B45 A0         mov eax,dword ptr ss:[ebp-0x60]
0051A9D1    E8 4AA0EEFF     call CrackZWT.00404A20                  ; 404A20Call是取长度的
0051A9D6    50              push eax
0051A9D7    8D45 9C         lea eax,dword ptr ss:[ebp-0x64]
0051A9DA    B9 50AA5100     mov ecx,CrackZWT.0051AA50               ; 泽文堂易学软件
0051A9DF    8B55 FC         mov edx,dword ptr ss:[ebp-0x4]
0051A9E2    E8 85A0EEFF     call CrackZWT.00404A6C                  ; 该Call拼接注册码与用户名
0051A9E7    8B45 9C         mov eax,dword ptr ss:[ebp-0x64]
0051A9EA    E8 31A2EEFF     call CrackZWT.00404C20
0051A9EF    8BD0            mov edx,eax
0051A9F1    8D45 A4         lea eax,dword ptr ss:[ebp-0x5C]
0051A9F4    59              pop ecx
0051A9F5    E8 9EFEFFFF     call CrackZWT.0051A898                  ; 明白了,是用0x26的长度截取0x2B的固定长度
0051A9FA    8BD3            mov edx,ebx                             ; 0003-06C3-BFEB-FBFF-7FDA-FBBF泽文堂易学软件!!!取这个的0x26的长度
0051A9FC    8D45 A4         lea eax,dword ptr ss:[ebp-0x5C]
0051A9FF    E8 14FFFFFF     call CrackZWT.0051A918                  ; 这里注册码出来了。。。跟进去




在上面的Call中,将机器码与固定字符串"泽文堂易学软件"、“gxcwljnxz”分别进行拼接。
 

[Asm] 纯文本查看 复制代码
1
2
EBP-13E7AC 0018FCAC            002CE458  ASCII "0003-06C3-BFEB-FBFF-7FDA-FBBF泽文堂易学软件"                长度:0x2b
EBP-13E7A8 0018FCB0            002BA0A8  ASCII "0003-06C3-BFEB-FBFF-7FDA-FBBFgxcwljnxz"                        长度:0x26


 

[Asm] 纯文本查看 复制代码
1
2
3
0018FCC4                          30 30 30 33 2D 30 36 43          0003-06C
0018FCD4  33 2D 42 46 45 42 2D 46 42 46 46 2D 37 46 44 41  3-BFEB-FBFF-7FDA
0018FCE4  2D 46 42 42 46 D4 F3 CE C4 CC C3 D2 D7 D1        -FBBF泽文堂易?.



同时使用用字串2的长度截取字串1的ASC码。

[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
0051A898    53              push ebx                                ; 注册码前身:
0051A899    56              push esi
0051A89A    57              push edi
0051A89B    55              push ebp
0051A89C    8BF9            mov edi,ecx
0051A89E    8BEA            mov ebp,edx
0051A8A0    8BF0            mov esi,eax
0051A8A2    8B46 10         mov eax,dword ptr ds:[esi+0x10]
0051A8A5    C1E8 03         shr eax,0x3
0051A8A8    83E0 3F         and eax,0x3F
0051A8AB    8BD7            mov edx,edi                             ; 机器码+9gxcwljnxz位长度:0x26
0051A8AD    C1E2 03         shl edx,0x3                             ; 长度左移0x3位,相当于长度*2^3次方,
0051A8B0    0156 10         add dword ptr ds:[esi+0x10],edx         ; 0x18FCC4地址保存计算结果,!!第2次计算过来,累计求和
0051A8B3    3B56 10         cmp edx,dword ptr ds:[esi+0x10]
0051A8B6    76 03           jbe short CrackZWT.0051A8BB
0051A8B8    FF46 14         inc dword ptr ds:[esi+0x14]
0051A8BB    8BD7            mov edx,edi                             ; 将长度重新初始化Edx,继续位移操作
0051A8BD    C1EA 1D         shr edx,0x1D                            ; 执行右移操作,0x1d
0051A8C0    0156 14         add dword ptr ds:[esi+0x14],edx         ; 开始新的Dword空间保存edx的值
0051A8C3    BB 40000000     mov ebx,0x40                            ; EBx赋值0x40///0d64
0051A8C8    2BD8            sub ebx,eax
0051A8CA    3BDF            cmp ebx,edi
0051A8CC    77 32           ja short CrackZWT.0051A900
0051A8CE    8D4406 18       lea eax,dword ptr ds:[esi+eax+0x18]
0051A8D2    8BCB            mov ecx,ebx
0051A8D4    8BD5            mov edx,ebp
0051A8D6    E8 25D1EEFF     call CrackZWT.00407A00                  ; 此Call作用是交换EAX,EDX
0051A8DB    8BD6            mov edx,esi
0051A8DD    8D46 18         lea eax,dword ptr ds:[esi+0x18]         ; 将机器码与泽文党的地址传给EAX
0051A8E0    E8 4FF8FFFF     call CrackZWT.0051A134
0051A8E5    EB 0E           jmp short CrackZWT.0051A8F5
0051A8E7    8BD6            mov edx,esi
0051A8E9    8D441D 00       lea eax,dword ptr ss:[ebp+ebx]
0051A8ED    E8 42F8FFFF     call CrackZWT.0051A134
0051A8F2    83C3 40         add ebx,0x40
0051A8F5    8D43 3F         lea eax,dword ptr ds:[ebx+0x3F]
0051A8F8    3BF8            cmp edi,eax
0051A8FA  ^ 77 EB           ja short CrackZWT.0051A8E7
0051A8FC    33C0            xor eax,eax
0051A8FE    EB 02           jmp short CrackZWT.0051A902
0051A900    33DB            xor ebx,ebx
0051A902    8D4406 18       lea eax,dword ptr ds:[esi+eax+0x18]     ; ESi+eax*0x18,,0x18其中0x10=0123456789ABCDEFFEDCBA9876543210,,0x8的内容为,上段计算的左移与右移的数据。0x130/0x0
0051A906    8BCF            mov ecx,edi
0051A908    2BCB            sub ecx,ebx
0051A90A    8D541D 00       lea edx,dword ptr ss:[ebp+ebx]
0051A90E    E8 EDD0EEFF     call CrackZWT.00407A00


 

[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
0051A0F8    56              push esi                                ; 出注册码的段首,,计算过程,还得要前溯
0051A0F9    8BF0            mov esi,eax
0051A0FB    8BC2            mov eax,edx
0051A0FD    8BD1            mov edx,ecx                             ; 压参数0x2到Edx,Ecx做临时变量使用!
0051A0FF    85D2            test edx,edx
0051A101    76 2F           jbe short CrackZWT.0051A132             ; 计算体
0051A103    8A0E            mov cl,byte ptr ds:[esi]                ; 从0x18fcc4+0x8,开始取数,进行and cl,0xff操作
0051A105    80E1 FF         and cl,0xFF
0051A108    8808            mov byte ptr ds:[eax],cl                ; 明白EAX中的0x18fc88的作用,是保存临时结果的。
0051A10A    40              inc eax
0051A10B    8B0E            mov ecx,dword ptr ds:[esi]              ; 取Esi0x18fcc4,第一次是Byte,之后是Dword,4字
0051A10D    C1E9 08         shr ecx,0x8                             ; 右移0x8位,=1
0051A110    80E1 FF         and cl,0xFF                             ; and cl,0xff,,=1
0051A113    8808            mov byte ptr ds:[eax],cl
0051A115    40              inc eax
0051A116    8B0E            mov ecx,dword ptr ds:[esi]              ; 第3次取ESi,
0051A118    C1E9 10         shr ecx,0x10                            ; 右移0x10位,,ECx=0,,,,
0051A11B    80E1 FF         and cl,0xFF
0051A11E    8808            mov byte ptr ds:[eax],cl
0051A120    40              inc eax
0051A121    8B0E            mov ecx,dword ptr ds:[esi]
0051A123    C1E9 18         shr ecx,0x18                            ; 右移0x18位,,,
0051A126    80E1 FF         and cl,0xFF                             ; and cl,0xff,,,
0051A129    8808            mov byte ptr ds:[eax],cl
0051A12B    40              inc eax
0051A12C    83C6 04         add esi,0x4                             ; Esi+0x4,,,将偏移转到0x18fcc4+0x4位置。
0051A12F    4A              dec edx
0051A130  ^ 75 D1           jnz short CrackZWT.0051A103
0051A132    5E              pop esi




在此处进行3轮的循环,用来生成最终的注册码。跟踪的太累,直接找到计算完成后的地址,
 

[Asm] 纯文本查看 复制代码
1
2
3
4
0051AC72    E8 3D000000     call CrackZWT.0051ACB4                  ; 这个call有计算过程。
0051AC77    8B55 F4         mov edx,dword ptr ss:[ebp-0xC]
0051AC7A    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
0051AC7D    E8 EA9EEEFF     call CrackZWT.00404B6C                  ; 定义为关键的Call




直接在此处51AC7A这里截取EDX中的内存,即为注册码。


 


0x03、注册信息


将爆出的注册码写进zwtsoft.ini中的ID1=后面的地方,Local=是你注册的用户名。可自行修改。
先生成注册用的zwtsoft.ini文件,然后把内存注册机生成的注册码保存进ini文件即可!

[Asm] 纯文本查看 复制代码
1
2
3
4
5
[zwtsoft]
Local=Lmze2000
User=泽文堂
ID1=43562ea3-75617234-40821625-55d047c2
ID2=0003-06C3-BFEB-FBFF-7FDA-FBBF



 


 



 




热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等