不懂破解 发表于 2007-9-11 00:50:47

算法分析的几个入门疑惑

为便于分析,用户名取abcd,用ollydbg进行追踪分析。
注册码计算的关键部分见下:
==============▲=计算开始=▲===============

:004011E0 33DB                  xor ebx, ebx    ---------->EBX清0
:004011E2 8A5C05E4                mov bl, byte ptr --->依次取注册名字符的16进制值送入EBX的低位。
:004011E6 03D3                  add edx, ebx  ---------->EDX=EBX+EDX
              其中,EDX的初始值为0。EDX用来保存每次循环后的结果。
:004011E8 40                      inc eax          --------->EAX加1,作为计数器
:004011E9 3BC8                  cmp ecx, eax   --------->取完了吗?
:004011EB 7FF3                  jg 004011E0   --------->没取完就跳回循环。
=================计算结束=================
追踪过程中各寄存器值的列表清单:

光条位置        第一次        第二次
        EAX        EBX        ECX        EDX        EAX        EBX        ECX        EDX
4011E2        0        0        4        0        1        0        4        61
4011E6        0        61        4        0        1        62        4        61
4011E8        0        61        4        61        1        62        4        C3
4011E9        1        61        4        61        2        62        4        C3
4011EB                                                               
光条位置        第三次        第四次
        EAX        EBX        ECX        EDX        EAX        EBX        ECX        EDX
4011E2        2        0        4        C3        3        0        4        126
4011E6        2        63        4        C3        3        64        4        126
4011E8        2        63        4        126        3        64        4        18A
4011E9        3        63        4        126        4        64        4        18A
4011EB                                                               
说明:C3=61+62; 126=C3+63; 18A=126+64
18A=61+62+63+64      18A的十进制为394
总结:用户名abcd 注册码394
它的注册算法就是将姓名的所有字母ascii码之和相加,就是注册码。

不懂破解 发表于 2007-9-11 00:53:37

这个是我看的有个入门篇的算法分析教程,但是看不太懂,入门就被卡住了,
入门疑惑:
1.追踪过程中各寄存器值的列表清单里光条在不同的位置,EAX,EBX,ECX,EDX的值相应随之变化,这个是操作那些步骤实现的啊?/:L
2.通过这些变化就可以断定:
C3=61+62; 126=C3+63; 18A=126+64
18A=61+62+63+64      18A的十进制为394

看的一知半解,如云里雾里一样,各位大佬 有时间帮俺指点下啊/:014

Nisy 发表于 2007-9-11 12:44:58

EBX清0==> 开始取每一位用户名的ASCII
EDX初试数值为0就是为了保存最后的计算结果
ECX中保存的是最初 用户名的位数
EAX做累加器 计算用户名取了几位

计算结束 下方的数据不需要再看~

不懂破解 发表于 2007-9-11 14:37:20

看来还是欠缺太多
回去好好研究研究再

网际飞鹰 发表于 2007-9-11 23:53:13

谢谢不懂破解大侠的文章

不懂破解 发表于 2007-9-12 08:12:59

原帖由 网际飞鹰 于 2007-9-11 23:53 发表 https://www.chinapyg.com/images/common/back.gif
谢谢不懂破解大侠的文章

我吐血晕过去:funk:

sislcb 发表于 2007-9-12 09:49:08

哈哈,一山会还有一山低 /:018

jy2207661 发表于 2007-9-15 21:25:08

支持版主好好学习,学好了可以教我们了。
页: [1]
查看完整版本: 算法分析的几个入门疑惑