飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4909|回复: 6

[原创] 雨杰合同管理软件 V6.0 追码、DUP、算法分析

[复制链接]
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

    发表于 2014-6-26 19:26:26 | 显示全部楼层 |阅读模式
    本帖最后由 geekcat 于 2014-6-27 08:57 编辑

    【文章标题】:  雨杰合同管理软件 V6.0    追码、DUP、算法分析
    【文章作者】: geekcat
    【作者邮箱】: geek_huang@163.com
    【作者主页】:
    【软件名称】: 雨杰合同管理软件 V6.0  
    【软件大小】: 3.58 MB (3,764,631 字节)
    【加壳方式】: 无
    【保护方式】: 注册码
    【编写语言】: Borland C++ 1999
    【使用工具】: OD、PEID
    【操作平台】: XP SP3
    【下载地址】:http://www.qp35.com/
    破解声明】:破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
    【软件介绍】:完善的合同管理是公司健康运作的一个重要标志。雨杰合同管理软件简单易用,可方便的帮助你对供货商和客户的合同进行管理,协助您完成应收应付款分析,自动统计所有供货商和客户的应收应付款额,为您大大节省工作时间,提高工作效率。雨杰合同管理软件将是您明智的选择
    【破解声明】:PYG第九轮作业4
    --------------------------------------------------------------------------------------------------------------------------------
    【破解过程】

    1、运行程序输入注册信息点击“注册”提示重启验证输入的注册信息是否正确;
    2、在软件的安装目录下找是否有保存注册信息没有找到,搜索注册表找到注册前面输入的注册信息;如下图:
    1.PNG
    3、打开插件“ApiBrieak”把注册表里面的全部六个断点都下好(调式没办法只好全部下)经过调试下“RegQueryValueExA”就可以了;注意右下角的堆栈窗口接着就是不停按F9直到如下处停下:
    3.PNG
    4、在出现“ValueName = "Name"”或“ValueName = "Pass"处“Alt+F9“返回程序领空,但要多次“Alt+F9“返回程序领空,我们就在出现“ValueName = "Date"返回;因为这三个注册表键值“Data”最后出现;
    5、返回后直接F8向下跑如可以看到明码:
    2.PNG
    6、F7进算法CALL:
    代码:

    00677158  /$  55            push ebp                                 ;  算法CALL
    00677159  |.  8BEC          mov ebp,esp
    0067715B  |.  51            push ecx
    0067715C  |.  B9 04000000   mov ecx,0x4
    00677161  |>  6A 00         /push 0x0
    00677163  |.  6A 00         |push 0x0
    00677165  |.  49            |dec ecx
    00677166  |.^ 75 F9         \jnz short Pact.00677161
    00677168  |.  51            push ecx
    00677169  |.  874D FC       xchg dword ptr ss:[ebp-0x4],ecx
    0067716C  |.  53            push ebx
    0067716D  |.  56            push esi
    0067716E  |.  57            push edi
    0067716F  |.  8BF9          mov edi,ecx
    00677171  |.  8955 FC       mov dword ptr ss:[ebp-0x4],edx           ;  注册名入ebp-0x4   (ASCII "GeekCat")
    00677174  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]
    00677177  |.  E8 D0DDD8FF   call Pact.00404F4C
    0067717C  |.  33C0          xor eax,eax
    0067717E  |.  55            push ebp
    0067717F  |.  68 19736700   push Pact.00677319
    00677184  |.  64:FF30       push dword ptr fs:[eax]
    00677187  |.  64:8920       mov dword ptr fs:[eax],esp
    0067718A  |.  8BC7          mov eax,edi
    0067718C  |.  E8 FBD8D8FF   call Pact.00404A8C
    00677191  |.  8B45 FC       mov eax,dword ptr ss:[ebp-0x4]           ;  注册名入eax  (ASCII "GeekCat")
    00677194  |.  E8 C3DBD8FF   call Pact.00404D5C                       ;  取注册名的长度
    00677199  |.  8BF0          mov esi,eax
    0067719B  |.  85F6          test esi,esi
    0067719D  |.  7E 26         jle short Pact.006771C5
    0067719F  |.  BB 01000000   mov ebx,0x1
    006771A4  |>  8D4D EC       /lea ecx,dword ptr ss:[ebp-0x14]
    006771A7  |.  8B45 FC       |mov eax,dword ptr ss:[ebp-0x4]
    006771AA  |.  0FB64418 FF   |movzx eax,byte ptr ds:[eax+ebx-0x1]     ;  取注册名的每一位
    006771AF  |.  33D2          |xor edx,edx
    006771B1  |.  E8 E630D9FF   |call Pact.0040A29C                      ;  每一位的ASCII码值
    006771B6  |.  8B55 EC       |mov edx,dword ptr ss:[ebp-0x14]
    006771B9  |.  8D45 F8       |lea eax,dword ptr ss:[ebp-0x8]
    006771BC  |.  E8 A3DBD8FF   |call Pact.00404D64                      ;  把第一位的ASICC码值链接一起
    006771C1  |.  43            |inc ebx
    006771C2  |.  4E            |dec esi
    006771C3  |.^ 75 DF         \jnz short Pact.006771A4
    006771C5  |>  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]           ;  ASCII链接在一起  (ASCII "4765656B436174")  设为A
    006771C8  |.  E8 8FDBD8FF   call Pact.00404D5C
    006771CD  |.  8BF0          mov esi,eax
    006771CF  |.  85F6          test esi,esi
    006771D1  |.  7E 2C         jle short Pact.006771FF
    006771D3  |.  BB 01000000   mov ebx,0x1
    006771D8  |>  8B45 F8       /mov eax,dword ptr ss:[ebp-0x8]
    006771DB  |.  E8 7CDBD8FF   |call Pact.00404D5C
    006771E0  |.  2BC3          |sub eax,ebx
    006771E2  |.  8B55 F8       |mov edx,dword ptr ss:[ebp-0x8]
    006771E5  |.  8A1402        |mov dl,byte ptr ds:[edx+eax]
    006771E8  |.  8D45 E8       |lea eax,dword ptr ss:[ebp-0x18]
    006771EB  |.  E8 84DAD8FF   |call Pact.00404C74
    006771F0  |.  8B55 E8       |mov edx,dword ptr ss:[ebp-0x18]
    006771F3  |.  8D45 F4       |lea eax,dword ptr ss:[ebp-0xC]
    006771F6  |.  E8 69DBD8FF   |call Pact.00404D64
    006771FB  |.  43            |inc ebx
    006771FC  |.  4E            |dec esi
    006771FD  |.^ 75 D9         \jnz short Pact.006771D8                 ;  循环把前面得到的A字符串倒序 (ASCII "471634B6565674") 设为B
    006771FF  |>  8D45 F8       lea eax,dword ptr ss:[ebp-0x8]
    00677202  |.  50            push eax
    00677203  |.  B9 04000000   mov ecx,0x4
    00677208  |.  BA 01000000   mov edx,0x1
    0067720D  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]
    00677210  |.  E8 A7DDD8FF   call Pact.00404FBC
    00677215  |.  8D45 F4       lea eax,dword ptr ss:[ebp-0xC]
    00677218  |.  50            push eax
    00677219  |.  B9 04000000   mov ecx,0x4
    0067721E  |.  BA 05000000   mov edx,0x5
    00677223  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]
    00677226  |.  E8 91DDD8FF   call Pact.00404FBC                       ;  取字符串B的前四位  (ASCII "4716")
    0067722B  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]
    0067722E  |.  E8 29DBD8FF   call Pact.00404D5C
    00677233  |.  83F8 04       cmp eax,0x4                              ;  把取得的字符串跟4比较
    00677236  |.  7D 2F         jge short Pact.00677267
    00677238  |.  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]
    0067723B  |.  E8 1CDBD8FF   call Pact.00404D5C                       ;  把不够4位的字符串计算
    00677240  |.  8BD8          mov ebx,eax
    00677242  |.  83FB 03       cmp ebx,0x3                              ;  把取得的字符串跟3比较 不够三位通过下面的循环来计算
    00677245  |.  7F 20         jg short Pact.00677267
    00677247  |>  8D4D E4       /lea ecx,dword ptr ss:[ebp-0x1C]
    0067724A  |.  8BC3          |mov eax,ebx
    0067724C  |.  C1E0 02       |shl eax,0x2
    0067724F  |.  33D2          |xor edx,edx
    00677251  |.  E8 4630D9FF   |call Pact.0040A29C
    00677256  |.  8B55 E4       |mov edx,dword ptr ss:[ebp-0x1C]
    00677259  |.  8D45 F8       |lea eax,dword ptr ss:[ebp-0x8]
    0067725C  |.  E8 03DBD8FF   |call Pact.00404D64
    00677261  |.  43            |inc ebx
    00677262  |.  83FB 04       |cmp ebx,0x4
    00677265  |.^ 75 E0         \jnz short Pact.00677247
    00677267  |>  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]           ;  取字符串B的5-8位 (ASCII "34B6") 设为C
    0067726A  |.  E8 EDDAD8FF   call Pact.00404D5C
    0067726F  |.  83F8 04       cmp eax,0x4
    00677272  |.  7D 2F         jge short Pact.006772A3
    00677274  |.  8B45 F4       mov eax,dword ptr ss:[ebp-0xC]
    00677277  |.  E8 E0DAD8FF   call Pact.00404D5C
    0067727C  |.  8BD8          mov ebx,eax
    0067727E  |.  83FB 03       cmp ebx,0x3
    00677281  |.  7F 20         jg short Pact.006772A3
    00677283  |>  8D4D E0       /lea ecx,dword ptr ss:[ebp-0x20]
    00677286  |.  8BC3          |mov eax,ebx
    00677288  |.  C1E0 02       |shl eax,0x2
    0067728B  |.  33D2          |xor edx,edx
    0067728D  |.  E8 0A30D9FF   |call Pact.0040A29C
    00677292  |.  8B55 E0       |mov edx,dword ptr ss:[ebp-0x20]
    00677295  |.  8D45 F4       |lea eax,dword ptr ss:[ebp-0xC]
    00677298  |.  E8 C7DAD8FF   |call Pact.00404D64
    0067729D  |.  43            |inc ebx
    0067729E  |.  83FB 04       |cmp ebx,0x4
    006772A1  |.^ 75 E0         \jnz short Pact.00677283                 ;  这个循环跟取B前四个字符串一样的计算
    006772A3  |>  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
    006772A6  |.  BA 30736700   mov edx,Pact.00677330                    ;  固定字符串   pactr954dj5 入edx
    006772AB  |.  E8 74D8D8FF   call Pact.00404B24
    006772B0  |.  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    006772B3  |.  50            push eax
    006772B4  |.  B9 04000000   mov ecx,0x4
    006772B9  |.  BA 01000000   mov edx,0x1
    006772BE  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]
    006772C1  |.  E8 F6DCD8FF   call Pact.00404FBC                       ;  取固定字符串的 前4位  pact 设为E
    006772C6  |.  FF75 DC       push dword ptr ss:[ebp-0x24]
    006772C9  |.  68 44736700   push Pact.00677344                       ;  -
    006772CE  |.  FF75 F8       push dword ptr ss:[ebp-0x8]              ;  字符串B  (ASCII "4716")
    006772D1  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]
    006772D4  |.  50            push eax
    006772D5  |.  B9 05000000   mov ecx,0x5
    006772DA  |.  BA 05000000   mov edx,0x5
    006772DF  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]
    006772E2  |.  E8 D5DCD8FF   call Pact.00404FBC                       ;  固定字符串   pactr954dj5 的5-9位字符串 r954d 设为D
    006772E7  |.  FF75 D8       push dword ptr ss:[ebp-0x28]
    006772EA  |.  68 44736700   push Pact.00677344                       ;  -
    006772EF  |.  FF75 F4       push dword ptr ss:[ebp-0xC]              ;  字符串C (ASCII "34B6")
    006772F2  |.  8BC7          mov eax,edi
    006772F4  |.  BA 06000000   mov edx,0x6
    006772F9  |.  E8 1EDBD8FF   call Pact.00404E1C
    006772FE  |.  33C0          xor eax,eax
    00677300  |.  5A            pop edx
    00677301  |.  59            pop ecx
    00677302  |.  59            pop ecx
    00677303  |.  64:8910       mov dword ptr fs:[eax],edx
    00677306  |.  68 20736700   push Pact.00677320
    0067730B  |>  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]
    0067730E  |.  BA 0A000000   mov edx,0xA
    00677313  |.  E8 98D7D8FF   call Pact.00404AB0
    00677318  \.  C3            retn

    算法分析 1、取用户名的ASCII码                                                     4765656B436174
                   2、再倒取ASCII码                                                            471634B6565674
                   3、取固定码 pactr954dj5的前4位                                     pact
                   4、连接符                                                                         -
                   5、取倒取ASCII码的前4位和固定字符串的5-9位               4716r954d
                   6、连接符                                                                         -
                   7、取倒取ASCII码的5-8位                                                34B6
                   8、得到注册码:

    注册信:GeekCat
    注册码:pact-4716r954d-34B6

    说明:算法分析部分参照第九期学员:lixy8888  学习分析算法,追码部分是自己完成;
    ----------------------------------------------------------------------------------------------------------------------------
    【破解总结】:
    1、字符串没加密,容易切入注册验证流程中;
    2、注册信息明文保存,要改进;
    3、注册码明文出现寄存器里,这点要改进应该加密;
    ----------------------------------------------------------------------------------------------------------------------------
    【版权声明】:
    本文原创于geekcat,转载请注明作者并保存文章的完整!

    附:正在学习用DUP,把“patch”和“loader”当作练习;
    loader.rar (7.61 KB, 下载次数: 3)
    patch.rar (248.74 KB, 下载次数: 3)

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-6-26 21:49:57 | 显示全部楼层
    没见过ASCIII,只见过ASCII。

    点评

    修改了,谢谢提醒!!  详情 回复 发表于 2014-6-27 08:56
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

     楼主| 发表于 2014-6-27 08:56:31 | 显示全部楼层
    DaShanRen 发表于 2014-6-26 21:49
    没见过ASCIII,只见过ASCII。



    修改了,谢谢提醒!!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2024-2-17 10:46
  • 签到天数: 927 天

    [LV.10]以坛为家III

    发表于 2014-6-27 09:02:41 | 显示全部楼层
    这些是好犀利的,我们都在学习!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-3 20:40
  • 签到天数: 148 天

    [LV.7]常住居民III

    发表于 2015-1-17 15:53:46 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-1 20:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-7-6 20:22:58 | 显示全部楼层
    路过必顶,谢谢分享。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-1-14 18:13
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2016-8-2 01:12:50 | 显示全部楼层
    谢谢分享,下来看下。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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