飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7498|回复: 15

[原创] 家财宝 家庭日记帐管理 V1.0算法分析(高手飘过)

[复制链接]

该用户从未签到

发表于 2008-3-6 13:14:18 | 显示全部楼层 |阅读模式
【破文标题】家财宝 家庭日记帐管理 V1.0算法分析(高手飘过)
【破文作者】我的水平太菜就不写名字了
【作者邮箱】
【作者主页】
破解工具】PEID+DEDE+OD
【破解平台】WindowsXP
【软件名称】家财宝 家庭日记帐管理
【软件大小】2.05M
【原版下载】 http://www.skycn.com/soft/42771.html
【保护方式】注册码
【软件简介】家财宝是一款适用于家庭或个人日记帐(包括收入、支出、帐户转帐、债务、债权)管理
软件。
系统提供多帐薄管理;家庭成员管理;自定义收支类别。
【破解声明】只为讨论、学习与分享破解技术,勿用于非法用途,请多多支持软件开发者!
------------------------------------------------------------------------
【破解过程】   很久没来给PYG做贡献了,今天来发篇算法,很简单的算法/:013 ,高手可以飘过了。
  1. 004C8600  /.  55                 push ebp
  2. 004C8601  |.  8BEC               mov ebp,esp
  3. 004C8603  |.  33C9               xor ecx,ecx
  4. 004C8605  |.  51                 push ecx
  5. 004C8606  |.  51                 push ecx
  6. 004C8607  |.  51                 push ecx
  7. 004C8608  |.  51                 push ecx
  8. 004C8609  |.  51                 push ecx
  9. 004C860A  |.  51                 push ecx
  10. 004C860B  |.  51                 push ecx
  11. 004C860C  |.  53                 push ebx
  12. 004C860D  |.  56                 push esi
  13. 004C860E  |.  8BD8               mov ebx,eax
  14. 004C8610  |.  33C0               xor eax,eax
  15. 004C8612  |.  55                 push ebp
  16. 004C8613  |.  68 47874C00        push Account.004C8747
  17. 004C8618  |.  64:FF30            push dword ptr fs:[eax]
  18. 004C861B  |.  64:8920            mov dword ptr fs:[eax],esp
  19. 004C861E  |.  8D55 F4            lea edx,[local.3]
  20. 004C8621  |.  8B83 0C030000      mov eax,dword ptr ds:[ebx+30C]
  21. 004C8627  |.  E8 20ECF8FF        call Account.0045724C                ;  取注册码
  22. 004C862C  |.  837D F4 00         cmp [local.3],0                      ;  注册码位数和0比较
  23. 004C8630  |.  75 13              jnz short Account.004C8645           ;  注册码不为0位就跳
  24. 004C8632  |.  8B83 0C030000      mov eax,dword ptr ds:[ebx+30C]
  25. 004C8638  |.  8B10               mov edx,dword ptr ds:[eax]
  26. 004C863A  |.  FF92 C4000000      call dword ptr ds:[edx+C4]
  27. 004C8640  |.  E9 D2000000        jmp Account.004C8717
  28. 004C8645  |>  8D55 F0            lea edx,[local.4]
  29. 004C8648  |.  8B83 10030000      mov eax,dword ptr ds:[ebx+310]
  30. 004C864E  |.  E8 F9EBF8FF        call Account.0045724C                ;  取机器码
  31. 004C8653  |.  8B45 F0            mov eax,[local.4]                    ;  机器码放到EAX中
  32. 004C8656  |.  E8 351FF4FF        call Account.0040A590                ;  这个CALL是干什么的不明白啊 希望高手能指点一下
  33. 004C865B  |.  DD5D F8            fstp qword ptr ss:[ebp-8]
  34. 004C865E  |.  9B                 wait
  35. 004C865F  |.  DB2D 54874C00      fld tbyte ptr ds:[4C8754]            ;  DS:[]里面的东西应
  36. 该是作者的生日19810529
  37. 004C8665  |.  DC45 F8            fadd qword ptr ss:[ebp-8]            ;  19810529与机器码相加,十进
  38. 制的
  39. 004C8668  |.  DD5D F8            fstp qword ptr ss:[ebp-8]            ;  得出一个数值我把他
  40. 叫做变换码
  41. 004C866B  |.  9B                 wait
  42. 004C866C  |.  DD45 F8            fld qword ptr ss:[ebp-8]
  43. 004C866F  |.  83C4 F4            add esp,-0C
  44. 004C8672  |.  DB3C24             fstp tbyte ptr ss:[esp]              ; |
  45. 004C8675  |.  9B                 wait                                 ; |
  46. 004C8676  |.  8D45 EC            lea eax,[local.5]                    ; |
  47. 004C8679  |.  E8 921DF4FF        call Account.0040A410                ; \Account.0040A410
  48. 004C867E  |.  8B45 EC            mov eax,[local.5]                    ;  变换码放到EAX中
  49. 004C8681  |.  50                 push eax
  50. 004C8682  |.  8D55 E8            lea edx,[local.6]
  51. 004C8685  |.  8B83 0C030000      mov eax,dword ptr ds:[ebx+30C]       ;  变换码放到DS:
  52. [EBP+30C]
  53. 004C868B  |.  E8 BCEBF8FF        call Account.0045724C                ;  取注册码
  54. 004C8690  |.  8B55 E8            mov edx,[local.6]                    ;  注册码放到EDX中
  55. 004C8693  |.  58                 pop eax
  56. 004C8694  |.  E8 9BC0F3FF        call Account.00404734                ;  这个是比较CALL
  57. 004C8699  |.  75 64              jnz short Account.004C86FF
  58. 004C869B  |.  B2 01              mov dl,1
  59. 004C869D  |.  A1 A8DC4300        mov eax,dword ptr ds:[43DCA8]
  60. 004C86A2  |.  E8 0157F7FF        call Account.0043DDA8
  61. 004C86A7  |.  8BF0               mov esi,eax
  62. 004C86A9  |.  BA 02000080        mov edx,80000002
  63. 004C86AE  |.  8BC6               mov eax,esi
  64. 004C86B0  |.  E8 9357F7FF        call Account.0043DE48
  65. 004C86B5  |.  B1 01              mov cl,1
  66. 004C86B7  |.  BA 68874C00        mov edx,Account.004C8768             ;  ASCII
  67. "SOFTWARE\EStarSoft\Account"
  68. 004C86BC  |.  8BC6               mov eax,esi
  69. 004C86BE  |.  E8 E957F7FF        call Account.0043DEAC
  70. 004C86C3  |.  8D55 E4            lea edx,[local.7]
  71. 004C86C6  |.  8B83 0C030000      mov eax,dword ptr ds:[ebx+30C]
  72. 004C86CC  |.  E8 7BEBF8FF        call Account.0045724C
  73. 004C86D1  |.  8B4D E4            mov ecx,[local.7]
  74. 004C86D4  |.  BA 8C874C00        mov edx,Account.004C878C             ;  ASCII "ProductID"
  75. 004C86D9  |.  8BC6               mov eax,esi
  76. 004C86DB  |.  E8 6859F7FF        call Account.0043E048
  77. 004C86E0  |.  8BC6               mov eax,esi
  78. 004C86E2  |.  E8 B1ADF3FF        call Account.00403498
  79. 004C86E7  |.  B8 A0874C00        mov eax,Account.004C87A0
  80. 004C86EC  |.  E8 F3E7F6FF        call Account.00436EE4
  81. 004C86F1  |.  A1 DC0F5000        mov eax,dword ptr ds:[500FDC]
  82. 004C86F6  |.  8B00               mov eax,dword ptr ds:[eax]
  83. 004C86F8  |.  E8 6FEDFAFF        call Account.0047746C
  84. 004C86FD  |.  EB 18              jmp short Account.004C8717
  85. 004C86FF  |>  B8 C0874C00        mov eax,Account.004C87C0
  86. 004C8704  |.  E8 DBE7F6FF        call Account.00436EE4
  87. 004C8709  |.  8B83 0C030000      mov eax,dword ptr ds:[ebx+30C]
  88. 004C870F  |.  8B10               mov edx,dword ptr ds:[eax]
  89. 004C8711  |.  FF92 C4000000      call dword ptr ds:[edx+C4]
  90. 004C8717  |>  33C0               xor eax,eax
  91. 004C8719  |.  5A                 pop edx
  92. 004C871A  |.  59                 pop ecx
  93. 004C871B  |.  59                 pop ecx
  94. 004C871C  |.  64:8910            mov dword ptr fs:[eax],edx
  95. 004C871F  |.  68 4E874C00        push Account.004C874E
  96. 004C8724  |>  8D45 E4            lea eax,[local.7]
  97. 004C8727  |.  BA 02000000        mov edx,2
  98. 004C872C  |.  E8 1BBCF3FF        call Account.0040434C
  99. 004C8731  |.  8D45 EC            lea eax,[local.5]
  100. 004C8734  |.  E8 EFBBF3FF        call Account.00404328
  101. 004C8739  |.  8D45 F0            lea eax,[local.4]
  102. 004C873C  |.  BA 02000000        mov edx,2
  103. 004C8741  |.  E8 06BCF3FF        call Account.0040434C
  104. 004C8746  \.  C3                 retn
  105. ------------------------------------------------------------------------------------------
  106. 我们进去算法部分看看吧,代码如下:
  107. 00404734  /$  53                 push ebx
  108. 00404735  |.  56                 push esi
  109. 00404736  |.  57                 push edi
  110. 00404737  |.  89C6               mov esi,eax
  111. 00404739  |.  89D7               mov edi,edx
  112. 0040473B  |.  39D0               cmp eax,edx                          ;  比较变换码和注册码
  113. 0040473D  |.  0F84 8F000000      je Account.004047D2                  ;  相等则跳
  114. 00404743  |.  85F6               test esi,esi
  115. 00404745  |.  74 68              je short Account.004047AF
  116. 00404747  |.  85FF               test edi,edi
  117. 00404749  |.  74 6B              je short Account.004047B6
  118. 0040474B  |.  8B46 FC            mov eax,dword ptr ds:[esi-4]         ;  变换码放到DS:[ESI
  119. -4],变换码位数放回到EAX
  120. 0040474E  |.  8B57 FC            mov edx,dword ptr ds:[edi-4]         ;  注册码放到DS:[EDI
  121. -4],注册码位数放回到EAX
  122. 00404751  |.  29D0               sub eax,edx                          ;  变换码位数减去注册
  123. 码位数
  124. 00404753  |.  77 02              ja short Account.00404757            ;  变换码的位数大于注
  125. 册码的位数的话就跳
  126. 00404755  |.  01C2               add edx,eax                          ;  如果变换码位数没有
  127. 比注册码位数大的话,这里通过加注册码位数的方法来还原变换码位数
  128. 00404757  |>  52                 push edx                             ;  变换码位数压栈
  129. 00404758  |.  C1EA 02            shr edx,2                            ;  右移2位,相当于除4
  130. 0040475B  |.  74 26              je short Account.00404783            ;  不等于0的话就不会
  131. 跳,即变换码的位数比1大就不跳了(应该不可能跳吧)
  132. 0040475D  |>  8B0E               /mov ecx,dword ptr ds:[esi]          ;  变换码前4位以ASCII
  133. 的形式放到ECX中
  134. 0040475F  |.  8B1F               |mov ebx,dword ptr ds:[edi]          ;  注册码前4位顺序以
  135. ASCII的形式放到ECX中
  136. 00404761  |.  39D9               |cmp ecx,ebx                         ;  两者比较
  137. 00404763  |.  75 58              |jnz short Account.004047BD          ;  不等则跳
  138. 00404765  |.  4A                 |dec edx                             ;  EDX减一
  139. 00404766  |.  74 15              |je short Account.0040477D           ;  EDX等于0的话就跳
  140. 00404768  |.  8B4E 04            |mov ecx,dword ptr ds:[esi+4]        ;  变换码再取4位顺序
  141. 以ASCII的形式放到ECX中
  142. 0040476B  |.  8B5F 04            |mov ebx,dword ptr ds:[edi+4]        ;  注册码再取4位顺序
  143. 以ASCII的形式放到ECX中
  144. 0040476E  |.  39D9               |cmp ecx,ebx                         ;  两者比较
  145. 00404770  |.  75 4B              |jnz short Account.004047BD          ;  不等则跳
  146. 00404772  |.  83C6 08            |add esi,8                           ;  加8,相当于留下了8
  147. 位后的东西
  148. 00404775  |.  83C7 08            |add edi,8                           ;  加8,相当与留下了8
  149. 位后的东西
  150. 00404778  |.  4A                 |dec edx                             ;  EDX再减一
  151. 00404779  |.^ 75 E2              \jnz short Account.0040475D
  152. 0040477B  |.  EB 06              jmp short Account.00404783
  153. 0040477D  |>  83C6 04            add esi,4
  154. 00404780  |.  83C7 04            add edi,4
  155. 00404783  |>  5A                 pop edx
  156. 00404784  |.  83E2 03            and edx,3                            ;  与3取与运算,相当
  157. 于2进制的只保留最后两位
  158. 00404787  |.  74 22              je short Account.004047AB
  159. 00404789  |.  8B0E               mov ecx,dword ptr ds:[esi]           ;  上面的指向的保留的
  160. 放到ECX中
  161. 0040478B  |.  8B1F               mov ebx,dword ptr ds:[edi]           ;  上面的指向的保留的
  162. 放到EBX中
  163. 0040478D  |.  38D9               cmp cl,bl                            ;  比较低位部分
  164. 0040478F  |.  75 41              jnz short Account.004047D2           ;  不等则跳
  165. 00404791  |.  4A                 dec edx
  166. 00404792  |.  74 17              je short Account.004047AB
  167. 00404794  |.  38FD               cmp ch,bh                            ;  比较高位部分
  168. 00404796  |.  75 3A              jnz short Account.004047D2           ;  不等则跳
  169. 00404798  |.  4A                 dec edx                              ;  EDX减1
  170. 00404799  |.  74 10              je short Account.004047AB
  171. 0040479B  |.  81E3 0000FF00      and ebx,0FF0000
  172. 004047A1  |.  81E1 0000FF00      and ecx,0FF0000
  173. 004047A7  |.  39D9               cmp ecx,ebx
  174. 004047A9  |.  75 27              jnz short Account.004047D2
  175. 004047AB  |>  01C0               add eax,eax
  176. 004047AD  |.  EB 23              jmp short Account.004047D2
  177. 004047AF  |>  8B57 FC            mov edx,dword ptr ds:[edi-4]
  178. 004047B2  |.  29D0               sub eax,edx
  179. 004047B4  |.  EB 1C              jmp short Account.004047D2
  180. 004047B6  |>  8B46 FC            mov eax,dword ptr ds:[esi-4]
  181. 004047B9  |.  29D0               sub eax,edx
  182. 004047BB  |.  EB 15              jmp short Account.004047D2
  183. 004047BD  |>  5A                 pop edx
  184. 004047BE  |.  38D9               cmp cl,bl                            ;  比较低位,即比较第
  185. 一位
  186. 004047C0  |.  75 10              jnz short Account.004047D2           ;  不等则跳
  187. 004047C2  |.  38FD               cmp ch,bh                            ;  比较高位,即比较第
  188. 二位
  189. 004047C4  |.  75 0C              jnz short Account.004047D2           ;  不等则跳
  190. 004047C6  |.  C1E9 10            shr ecx,10                           ;  变换码“这段”除以
  191. 1024(2的10次方),16进制右移4位
  192. 004047C9  |.  C1EB 10            shr ebx,10                           ;  注册码“这段”除以
  193. 1024(2的10次方),16进制右移4位
  194. 004047CC  |.  38D9               cmp cl,bl                            ;  比较低位,即比较“
  195. 这段”第三位
  196. 004047CE  |.  75 02              jnz short Account.004047D2           ;  不等则跳
  197. 004047D0  |.  38FD               cmp ch,bh                            ;  比较高位即比较这段
  198. 第四位
  199. 004047D2  |>  5F                 pop edi
  200. 004047D3  |.  5E                 pop esi
  201. 004047D4  |.  5B                 pop ebx
  202. 004047D5  \.  C3                 retn
复制代码
算法总结:这个算法总的就是比较注册码与变换码是否相等,从0040473D到这段代码的结束其实是在分
段比较,分别分4位、4位、2位来比较,所以我上面的说明用了“这段”的说法,这段比较不等后还进行
段内的逐位比较(不明白是什么用意,除非与变换码一样才会注册成功,其他的是不行的,为什么还要这
样比较呢?希望高手能解答一下),所以总的来说就是注册码直接与变换码的直接比较。
算法注册机相信只要学过编程都可以写的出来,大家可以自己写下留做纪念*^_^*
补充一下:刚才看了tianxj的回帖 发现我一个地方写错了 算法总结说了一堆的废话却没有说到重点
注册码确实就是机器码+19810529,感谢tianxj的补充 表示感谢
------------------------------------------------------------------------
【破解总结】算法不难,碰巧让我菜鸟碰上了,不敢私藏。愿与像我这样的菜鸟分享。最好是看我的破
文之前先自己动手弄一下,实在不行了再来看我的破文,保证提升的比较快*^_^*
                      感谢PYG的培养,带我走进破解的大门
------------------------------------------------------------------------
【版权声明】破文版权归我,转载版权归你。欢迎转载,盗版不究。如果能帮我改正和补充一下的话我
会更高兴的*^_^*

[ 本帖最后由 傻人有傻福 于 2008-3-6 19:55 编辑 ]

评分

参与人数 1威望 +8 收起 理由
tianxj + 8 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-6 13:56:37 | 显示全部楼层
/:001 跟着楼主走一遍。。。
PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-6 14:08:26 | 显示全部楼层
楼主的解释很详细哇,我也照着来两次哇,哈哈。谢谢分享
/:014
PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-6 14:29:43 | 显示全部楼层
:loveliness: 菜鸟不懂算法..


004C8699     75变74
004F0615     75变74
  
MS这样就爆破成功了。。。

[ 本帖最后由 magic659117852 于 2008-3-6 14:44 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-4-29 01:28
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2008-3-6 16:52:34 | 显示全部楼层
    用od载入,查找字符串ASCII,,找到注册失败,直接有一个向上跳的关键跳,在关键跳上关键CALL下断,直接追码就可以了 我的是 1213452007
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-6 17:31:41 | 显示全部楼层
    =真晕! 我都看迷糊了!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-3-6 19:03:06 | 显示全部楼层
    004C8656  |.  E8 351FF4FF        call Account.0040A590                ;  这个CALL是干什么的不明白啊 希望高手能指点一下

    我不是高手,那个CALL是将字符串转为浮点数字
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-3-6 19:25:49 | 显示全部楼层
    004C8694  |.  E8 9BC0F3FF        call Account.00404734                ;  应该是算法CALL


    这个不是算法 CALL,是比较CALL/:L
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-3-6 19:28:18 | 显示全部楼层
    算法就是采用浮点运算
    注册码=机器码+19810529
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-6 19:49:46 | 显示全部楼层
    tianxj 好强/:good
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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