吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 7247|回复: 66

[原创逆向图文] 易速快递单打印软件算法分析[新手思路]

  [复制链接]
pj2020 发表于 2017-4-11 20:50 | 显示全部楼层 |阅读模式

本帖最后由 pj2020 于 2017-4-11 23:25 编辑
【文章标题】:易速快递单打印软件算法分析[新手思路]
【文章作者】:pj2020
【软件名称】:易速快递单打印软件1.65
【软件大小】:7.55MB
【保护方式】:注册码
【下载地址】:自己搜索
【加壳方式】:无壳
【编写工具】:Borland Delphi 6.0 -7.0
逆向工具】:PEID、OD
【操作平台】:盗版XP3
【作者声明】:只是感兴趣,没有其他目的
【软件简介】:易速快递单打印软件是一款简单好用的快递单打印软件,即有申通、中通、圆通等现成的快递单模板供您选择,您也可以根据自己手中的快递单自己动手设计模板并进行保存,格式底图可以更换成您手中的快递单图片。
【思路方法】
写在前面:
易速快递单打印软件在XX论坛上早已有人PJ了,分析方法包括爆破、追码、内存注册机,能做出内存注册机,很明显是明码比较,所以这里不再讨论这些方法,本文只分析算法部分。
因前面的步骤比较简单,在此不再啰嗦,直接进入算法分部:(以机器码“WD-WCC2EL8ZELFA”为例)

1.png

[Asm] 纯文本查看 复制代码
00697A68  |.  E8 17010000   call kdd.00697B84                    ;  //进入算法部分
00697B84  /$  55            push ebp                              
00697B85  |.  8BEC          mov ebp,esp
00697B87  |.  51            push ecx
00697B88  |.  B9 04000000   mov ecx,0x4
00697B8D  |>  6A 00         /push 0x0
00697B8F  |.  6A 00         |push 0x0
00697B91  |.  49            |dec ecx
00697B92  |.^ 75 F9         \jnz short kdd.00697B8D
00697B94  |.  51            push ecx
00697B95  |.  874D FC       xchg [local.1],ecx
00697B98  |.  53            push ebx
00697B99  |.  56            push esi
00697B9A  |.  57            push edi
00697B9B  |.  8BF9          mov edi,ecx
00697B9D  |.  8955 FC       mov [local.1],edx                        ;  取机器码 "WD-WCC2EL8ZELFA"
00697BA0  |.  8B45 FC       mov eax,[local.1]
00697BA3  |.  E8 58D7D6FF   call kdd.00405300
00697BA8  |.  33C0          xor eax,eax
00697BAA  |.  55            push ebp
00697BAB  |.  68 457D6900   push kdd.00697D45
00697BB0  |.  64:FF30       push dword ptr fs:[eax]
00697BB3  |.  64:8920       mov dword ptr fs:[eax],esp
00697BB6  |.  8BC7          mov eax,edi
00697BB8  |.  E8 83D2D6FF   call kdd.00404E40
00697BBD  |.  8B45 FC       mov eax,[local.1]
00697BC0  |.  E8 4BD5D6FF   call kdd.00405110
00697BC5  |.  8BF0          mov esi,eax                              ;  机器码长度eax=0xF
00697BC7  |.  85F6          test esi,esi
00697BC9  |. /7E 26         jle short kdd.00697BF1                   ;  机器码为空跳走(有这种情况吗?)
00697BCB  |.  BB 01000000   mov ebx,0x1
00697BD0  |>  8D4D EC       /lea ecx,[local.5]
00697BD3  |.  8B45 FC       |mov eax,[local.1]                       ;  机器码: (ASCII "WD-WCC2EL8ZELFA")
00697BD6  |.  0FB64418 FF   |movzx eax,byte ptr ds:[eax+ebx-0x1]     ;  依次取机器码ASC码:ds:[01F20930]=57 ('W')
00697BDB  |.  33D2          |xor edx,edx
00697BDD  |.  E8 C628D7FF   |call kdd.0040A4A8
00697BE2  |.  8B55 EC       |mov edx,[local.5]                       ;  
00697BE5  |.  8D45 F8       |lea eax,[local.2]
00697BE8  |.  E8 2BD5D6FF   |call kdd.00405118
00697BED  |.  43            |inc ebx
00697BEE  |.  4E            |dec esi
00697BEF  |.^ 75 DF         \jnz short kdd.00697BD0
00697BF1  |>  8B45 F8       mov eax,[local.2]                        ;  机器码ASC码连成新名: (ASCII "57442D57434332454C385A454C4641")
00697BF4  |.  E8 17D5D6FF   call kdd.00405110
00697BF9  |.  8BF0          mov esi,eax                              ;  新名长度eax=0x1E
00697BFB  |.  85F6          test esi,esi
00697BFD  |. /7E 2C         jle short kdd.00697C2B                   ;  机器码为空跳走(有这种情况吗?)
00697BFF  |.  BB 01000000   mov ebx,0x1
00697C04  |>  8B45 F8       /mov eax,[local.2]                       ;  新名: (ASCII "57442D57434332454C385A454C4641")
00697C07  |.  E8 04D5D6FF   |call kdd.00405110
00697C0C  |.  2BC3          |sub eax,ebx                             ;  新名长度1E-ebx(计数器)
00697C0E  |.  8B55 F8       |mov edx,[local.2]
00697C11  |.  8A1402        |mov dl,byte ptr ds:[edx+eax]            ;  倒序取新名ASC码:31 ('1')/34 ('4')/36 ('6')/...
00697C14  |.  8D45 E8       |lea eax,[local.6]
00697C17  |.  E8 0CD4D6FF   |call kdd.00405028
00697C1C  |.  8B55 E8       |mov edx,[local.6]
00697C1F  |.  8D45 F4       |lea eax,[local.3]
00697C22  |.  E8 F1D4D6FF   |call kdd.00405118
00697C27  |.  43            |inc ebx
00697C28  |.  4E            |dec esi
00697C29  |.^ 75 D9         \jnz short kdd.00697C04
00697C2B  |>  8D45 F8       lea eax,[local.2]
00697C2E  |.  50            push eax
00697C2F  |.  B9 04000000   mov ecx,0x4                              ;  ecx=0x4,共取4位
00697C34  |.  BA 01000000   mov edx,0x1                              ;  edx=0x1,从第1位开始
00697C39  |.  8B45 F4       mov eax,[local.3]                        ;  新名倒序: (ASCII "1464C454A583C45423343475D24475")
00697C3C  |.  E8 2FD7D6FF   call kdd.00405370
00697C41  |.  8D45 F4       lea eax,[local.3]
00697C44  |.  50            push eax
00697C45  |.  B9 04000000   mov ecx,0x4                              ;  ecx=0x4,共取4位
00697C4A  |.  BA 05000000   mov edx,0x5                              ;  edx=0x5,从第5位开始
00697C4F  |.  8B45 F4       mov eax,[local.3]                        ;  新名倒序: (ASCII "1464C454A583C45423343475D24475")
00697C52  |.  E8 19D7D6FF   call kdd.00405370
00697C57  |.  8B45 F8       mov eax,[local.2]                        ;  取新名倒序第1-4位, (ASCII "1464")
00697C5A  |.  E8 B1D4D6FF   call kdd.00405110
00697C5F  |.  83F8 04       cmp eax,0x4                              ;  是否够4位?eax=0x4
00697C62  |.  7D 2F         jge short kdd.00697C93                   ;  够不够4位?够跳走,不够继续
00697C64  |.  8B45 F8       mov eax,[local.2]
00697C67  |.  E8 A4D4D6FF   call kdd.00405110
00697C6C  |.  8BD8          mov ebx,eax
00697C6E  |.  83FB 03       cmp ebx,0x3
00697C71  |. /7F 20         jg short kdd.00697C93                    ;  是否大于3位?大于跳走,否则继续
00697C73  |> |8D4D E4       /lea ecx,[local.7]
00697C76  |. |8BC3          |mov eax,ebx                             ;  eax=第1-4位的实际位数
00697C78  |. |C1E0 02       |shl eax,0x2                             ;  实际位数作左移2位(根据第1-4位的实际位数来左移)
00697C7B  |. |33D2          |xor edx,edx                             ;  edx清零
00697C7D  |.  E8 2628D7FF   |call kdd.0040A4A8
00697C82  |.  8B55 E4       |mov edx,[local.7]
00697C85  |.  8D45 F8       |lea eax,[local.2]
00697C88  |.  E8 8BD4D6FF   |call kdd.00405118
00697C8D  |.  43            |inc ebx
00697C8E  |.  83FB 04       |cmp ebx,0x4
00697C91  |.^ 75 E0         \jnz short kdd.00697C73
00697C93  |>  8B45 F4       mov eax,[local.3]                        ;  取新名倒序第5-8位, (ASCII "C454")
00697C96  |.  E8 75D4D6FF   call kdd.00405110
00697C9B  |.  83F8 04       cmp eax,0x4                              ;  是否够4位?eax=0x4
00697C9E  |. /7D 2F         jge short kdd.00697CCF                   ;  够不够4位?够跳走,不够继续
00697CA0  |. |8B45 F4       mov eax,[local.3]                        ;  取新名倒序第5-8位
00697CA3  |. |E8 68D4D6FF   call kdd.00405110
00697CA8  |. |8BD8          mov ebx,eax
00697CAA  |. |83FB 03       cmp ebx,0x3
00697CAD  |. |7F 20         jg short kdd.00697CCF                    ;  是否大于3位?大于跳走,否则继续
00697CAF  |> |8D4D E0       /lea ecx,[local.8]
00697CB2  |. |8BC3          |mov eax,ebx                             ;  eax=第5-8位的实际位数
00697CB4  |. |C1E0 02       |shl eax,0x2                             ;  实际位数作左移2位(根据第5-8位的实际位数来左移)
00697CB7  |. |33D2          |xor edx,edx                             ;  edx清零
00697CB9  |. |E8 EA27D7FF   |call kdd.0040A4A8
00697CBE  |. |8B55 E0       |mov edx,[local.8]
00697CC1  |. |8D45 F4       |lea eax,[local.3]
00697CC4  |. |E8 4FD4D6FF   |call kdd.00405118
00697CC9  |. |43            |inc ebx
00697CCA  |. |83FB 04       |cmp ebx,0x4
00697CCD  |.^|75 E0         \jnz short kdd.00697CAF                  ;  够4位了吗?不够继续
00697CCF  |>  8D45 F0       lea eax,[local.4]
00697CD2  |.  BA 5C7D6900   mov edx,kdd.00697D5C                     ;  固定字串:KDD24588d54c
00697CD7  |.  E8 FCD1D6FF   call kdd.00404ED8
00697CDC  |.  8D45 DC       lea eax,[local.9]
00697CDF  |.  50            push eax
00697CE0  |.  B9 04000000   mov ecx,0x4                              ;  ecx=0x4,共取4位
00697CE5  |.  BA 01000000   mov edx,0x1                              ;  edx=0x1,从第1位开始
00697CEA  |.  8B45 F0       mov eax,[local.4]
00697CED  |.  E8 7ED6D6FF   call kdd.00405370                        ;  
00697CF2  |.  FF75 DC       push [local.9]                           ;  取固定字串第1-4位:(ASCII "KDD2")
00697CF5  |.  68 747D6900   push kdd.00697D74                        ;  用“-”号连接
00697CFA  |.  FF75 F8       push [local.2]                           ;  新名倒序第1-4位, (ASCII "1464")
00697CFD  |.  8D45 D8       lea eax,[local.10]
00697D00  |.  50            push eax
00697D01  |.  B9 05000000   mov ecx,0x5                              ;  ecx=0x5,共取5位
00697D06  |.  BA 05000000   mov edx,0x5                              ;  edx=0x5,从第5位开始
00697D0B  |.  8B45 F0       mov eax,[local.4]
00697D0E  |.  E8 5DD6D6FF   call kdd.00405370                        ;  
00697D13  |.  FF75 D8       push [local.10]                          ;  取固定字串第5-9位:(ASCII "4588d")
00697D16  |.  68 747D6900   push kdd.00697D74                        ;  用“-”号连接
00697D1B  |.  FF75 F4       push [local.3]                           ;  新名倒序第5-8位, (ASCII "C454")
00697D1E  |.  8BC7          mov eax,edi
00697D20  |.  BA 06000000   mov edx,0x6                              ;  edx=0x6
00697D25  |.  E8 A6D4D6FF   call kdd.004051D0
00697D2A  |.  33C0          xor eax,eax
00697D2C  |.  5A            pop edx                                  ;  0012EC08
00697D2D  |.  59            pop ecx                                  ;  0012EC08
00697D2E  |.  59            pop ecx                                  ;  0012EC08
00697D2F  |.  64:8910       mov dword ptr fs:[eax],edx
00697D32  |.  68 4C7D6900   push kdd.00697D4C
00697D37  |>  8D45 D8       lea eax,[local.10]
00697D3A  |.  BA 0A000000   mov edx,0xA
00697D3F  |.  E8 20D1D6FF   call kdd.00404E64
00697D44  \.  C3            retn



算法总结:(以机器码“WD-WCC2EL8ZELFA”为例)
游客,如果您要查看本帖隐藏内容请回复

写在后面:
本软件为明码比较,就算小白中的小白也很容易追到注册码,但若以为追到码就成功了,那有可能你就错了,听说该软件有暗桩。至于是否真有暗桩,有何暗桩,又如何去暗桩,那就不在本文的分析范围内了,因本文旨在探讨算法,别无其他。对于那些的确需要这个软件的朋友,还是建议去购买正版,支持一下国软!

2.png

评分

参与人数 23威望 +1 HB +35 THX +11 收起 理由
禽大师 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
sjtkxy + 1 + 1
我是我是一体 + 1
浅酌◇咖啡 + 1
文字君 + 1
Jawon + 1
一路走来不容易 + 1
消逝的过去 + 1
冷亦飞 + 1
akk1898 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
lies + 1
hnymsh + 1
mengzhisuoliu1 + 1
ghwaikl + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
newboy + 1 [快捷评语] - 分享精神,是最值得尊敬的!
海天一色001 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
zlyqwe456 + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
Shark恒 + 1 + 20 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Rooking 发表于 2017-4-15 20:07 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2017-4-11 21:26 | 显示全部楼层

总结的特别好,很羡慕大家有时间做自己喜欢做的事,我现在天天跟孩子玩。。

所以,珍惜时间吧,多做些自己喜欢做的事,免得等到时间身不由己的时候后悔不已。。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zhangfuqin 发表于 2017-4-11 23:09 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
钢棍泄师傅 发表于 2017-4-12 21:33 | 显示全部楼层

非常感谢楼主的分享!支持...
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
123-木头人 发表于 2017-4-14 06:47 来自手机端 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ps122 发表于 2017-4-14 08:07 | 显示全部楼层

不错,谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
万能的群主 发表于 2017-4-14 09:02 | 显示全部楼层

这个分析的够详细的
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
googls 发表于 2017-4-14 09:03 | 显示全部楼层

一直在找 打印机快递单的软件 谢啦
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
bai123tt 发表于 2017-4-15 12:24 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
赞帖
2层
3层
4层
5层
6层
7层
8层
9层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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