nietsme 发表于 2008-9-11 21:31:53

004064AA|.8D45 B0       lea   eax, dword ptr
004064AD|.50            push    eax
004064AE|.E8 6D000000   call    00406520                         ;大写转换回小写并且去掉最前面一位字符

call 406520的作用并不是换小写去掉最前面一位字符,而是只分析串的前两个字符
如果第一位为字母,则只将这位变为小写,其他原分不动。
    比如邮箱是[email protected]的时候会得到sshi35849s6r,经过call 406520后仍是sshi35849s6r
如果第一位为数字并且第二位为字母,则去掉第一位的数字。
    比如邮箱是[email protected]的时候会得到9d5p47etf7oph,经过call 406520后是d5p47etf7oph
如果前两位都是数字,则将第一位的ascii码+0x31做为字串首位,然后跳过第二位数字,再接上后面的串。
    比如邮箱是[email protected]的时候会得到936kndahkl9nc,
    0x39(9)+0x31=0x6A(j)
    则call后字串为j6kndahkl9nc
//这样的目的是让注册码首位是字母

hflywolf 发表于 2008-9-11 23:43:48

原帖由 nietsme 于 2008-9-11 21:31 发表 https://www.chinapyg.com/images/common/back.gif


call 406520的作用并不是换小写去掉最前面一位字符,而是只分析串的前两个字符
如果第一位为字母,则只将这位变为小写,其他原分不动。
    比如邮箱是[email protected]的时候会得到sshi35849s6r,经过call 406520后 ...
/:good /:good /:good

谢谢指出分析中错误的地方.....

修一明 发表于 2008-9-11 23:48:06

username:reshad
email:[email protected]
pwd:eth68wfebvkn

nietsme 发表于 2008-9-12 13:39:42

原帖由 hflywolf 于 2008-9-11 23:43 发表 https://www.chinapyg.com/images/common/back.gif

/:good /:good /:good

谢谢指出分析中错误的地方.....

我初学,所以才在简单的地方看的比较细~   :handshake

cao2109 发表于 2008-9-12 20:05:34

姓名:cao2109
电邮:[email protected]
密码:dw6jm617g2xp

Nisy 发表于 2008-9-13 00:59:54

两位都很强大 支持下 ~~

瀚海雄风 发表于 2008-9-13 02:05:58

很强大,分析的如此细致!我跟了一下就晕了,call深入太多,有一个Call根本不懂什么意思!
哪位大侠能够给出算法样本,15#的兄弟用IDE版本的描述不是很明白!

cao2109 发表于 2008-9-13 08:57:10

昨天中午看见的帖子,才开始下手,一直没头绪,吃饭去了。直到晚上才静下心来看,我下段比较盲目,从MsgBox开始的,没段下,MessageBoxA,还是没断下,MessageBoxW,段下。。。段下后想了想,拦截到错误提示有什么用,本打算出头下手,看到一个本地调用来至****X就看到字符串str1和str2比较,寄存器明码比较,拿出来一试,注册完成。自己看看自己都不知道怎么找到了(太盲目了,有运气成分)。后来看到9楼和15楼的算法,傻了....不知道为啥在那里下段??完全看不明白/:002

2005ljb 发表于 2008-9-13 22:54:11

很佩服前面算法分析的朋友,我自己也只能跟出注册码,也只分析到哪里是关键CALL,再进一步的分析就不会了.呵呵,基础很差,目前只能跟出明码的东西.

puti67 发表于 2008-9-16 09:11:55

老大是在培养发现人呀,顶你一下
页: 1 2 [3] 4
查看完整版本: 【小游戏】简单的软件练手(9楼、15楼已给出算法分析)