| 谈一个CrackMe解密算法的数学原理 |
| 作者:佚名 来源:不详 发布时间:2008-1-10 16:11:33 |
减小字体
增大字体
|
【文章标题】: 再谈一个CrackMe解密算法的数学原理 【文章作者】: kaien 【作者邮箱】: kkaien@hotmail.com 【软件名称】: echap511.exe 【加壳方式】: 无壳 【使用工具】: OllyDbg,winxp自带的计算器,VC(写注册机用) 【操作平台】: winxp -------------------------------------------------------------------------------- 【详细过程】 昨天看到WAKU写的一篇题为“<<加密与解密第二版>>光盘中的一个CrackMe破解”的破解文章。我看文章前直接下了CrackMe自己破了一下。发现虽然很简单,但是很精彩!!! 所以忍不住要借WAKU的光也写一篇破解文章。好东西就是不厌其谈,百遍不穿啊! 本文我将侧重与讨论这个解密算法的数学原理和演变方法,从而大大的简化了解密过程。 这是本人在看雪的第二篇破文,希望本人这篇拙作能对新手们有所帮助。 算法部分代码如下,很好理解,看我后面的注释: 004010CE |. 33FF xor edi,edi ; edi清零 004010D0 |. B9 08000000 mov ecx,8 ; 下面的循环次数为8次(估计密码是8位) 004010D5 |. BE 44304000 mov esi,echap511.00403044 ; 取密码到esi 004010DA |> 8036 32 /xor byte ptr ds:[esi],32 ; 每个字母都和32 xor 004010DD |. 46 |inc esi 004010DE |.^ E2 FA \loopd short echap511.004010DA 004010E0 |. BE 44304000 mov esi,echap511.00403044 ; 变换后的密码的地址给esi 004010E5 |. B9 04000000 mov ecx,4 ; ecx=4 这里就是说,下面循环4次 004010EA |> 8A06 /mov al,byte ptr ds:[esi] ; 取第一位 004010EC |. 8A5E 01 |mov bl,byte ptr ds:[esi+1] ; 取第二位 004010EF |. 32C3 |xor al,bl ; al=al^bl 004010F1 |. 8887 4C304000 |mov byte ptr ds:[edi+40304C],al ; 因为前面edi已经清零了(看第一行)。所以第一次循环时这里就是取地址40304c 004010F7 |. 83C6 02 [1] [2] [3] [4] [5] 下一页
|
|
[]
[返回上一页]
[打 印]
|
|
|