吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14892|回复: 41
收起左侧

[原创] XX天心正运内存注册机及劫持patch

[复制链接]
lmze2000 发表于 2017-5-18 22:25
本帖最后由 zjh16529 于 2019-6-6 18:39 编辑

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


软件下载地址: 天心正运.zip (1.33 MB, 下载次数: 572) (含内存注册机)
劫持Patch下载: ZWTTian 和谐补丁.zip (1.12 MB, 下载次数: 305)


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


末注册.png


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


[Asm] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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中的内存,即为注册码。


内存注册机.png


0x03、注册信息


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

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


内存注册.png



zwtsoft.png



天心正运.png


天心正运2.png

点评

我是第一个搞南方软件的,你是最后一个,行行好,放国产软件一马吧  发表于 2017-5-20 18:55

免费评分

参与人数 12威望 +1 吾爱币 +15 热心值 +10 收起 理由
jackjack999 + 1 + 1 用心讨论,共获提升!
CHEUNGQAZ + 1 热心回复!
论坛守护神 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
leeds + 1 + 1 都搞定了可以带台电脑上街算命·哈哈哈··
lin295693097 + 1 + 1 谢谢@Thanks!
雫Hao洋洋 + 1 热心回复!
在路上的人 + 1 + 1 谢谢@Thanks!
tjdx + 1 + 1 谢谢@Thanks!
qaz003 + 1 用心讨论,共获提升!
Sound + 1 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
仙峰涯 + 1 + 1 我很赞同!
Alonc + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lmze2000 发表于 2017-5-29 09:09
cpannn 发表于 2017-5-28 09:57
直接在此处51AC7A这里截取EDX中的内存,即为注册码。,用的是什么工具,楼主

用的内存注册机,,就那个位置,就可以把注册码给弹出来。
头像被屏蔽
summer591 发表于 2019-4-27 16:43
a2523188267 发表于 2017-5-18 22:37
suchunping 发表于 2017-5-18 22:50
娱乐的好工具
Alonc 发表于 2017-5-18 23:34
支持下 感谢楼主热心分享
chenjingyes 发表于 2017-5-19 01:10
哈哈哈哈   感谢楼主热心分享  
你懂不懂 发表于 2017-5-19 04:39
前排支持,感谢分享
qaz003 发表于 2017-5-19 04:53
谢谢分享。。很祥细的过程
tjdx 发表于 2017-5-19 06:06
谢谢大神,讲解很细致,学习了。
雫Hao洋洋 发表于 2017-5-19 08:27
感谢分享,
dad9 发表于 2017-5-19 08:44
这感觉很奇妙,风水和择日居然有软件。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-28 18:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表