算法分析的几个入门疑惑
为便于分析,用户名取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码之和相加,就是注册码。 这个是我看的有个入门篇的算法分析教程,但是看不太懂,入门就被卡住了,
入门疑惑:
1.追踪过程中各寄存器值的列表清单里光条在不同的位置,EAX,EBX,ECX,EDX的值相应随之变化,这个是操作那些步骤实现的啊?/:L
2.通过这些变化就可以断定:
C3=61+62; 126=C3+63; 18A=126+64
18A=61+62+63+64 18A的十进制为394
看的一知半解,如云里雾里一样,各位大佬 有时间帮俺指点下啊/:014 EBX清0==> 开始取每一位用户名的ASCII
EDX初试数值为0就是为了保存最后的计算结果
ECX中保存的是最初 用户名的位数
EAX做累加器 计算用户名取了几位
计算结束 下方的数据不需要再看~ 看来还是欠缺太多
回去好好研究研究再 谢谢不懂破解大侠的文章 原帖由 网际飞鹰 于 2007-9-11 23:53 发表 https://www.chinapyg.com/images/common/back.gif
谢谢不懂破解大侠的文章
我吐血晕过去:funk: 哈哈,一山会还有一山低 /:018 支持版主好好学习,学好了可以教我们了。
页:
[1]