看了许多的教程,都是在分析算法,无奈看不懂,也看不明白,现在连如何入门都不知道了。
如:百度一下----[PYG]算法分析入门第三课
下面是我截取的一段文章:
进入call 0050EE74:
0050EE74 /$ 55 push ebp
0050EE75 |. 8BEC mov ebp,esp
0050EE77 |. 6A 00 push 0
0050EE79 |. 53 push ebx
0050EE7A |. 56 push esi
0050EE7B |. 8BF0 mov esi,eax ; 机器码十六进制03E439C9送到esi
0050EE7D |. 33C0 xor eax,eax ; 清零
0050EE7F |. 55 push ebp
0050EE80 |. 68 42EF5000 push Unpacked.0050EF42
0050EE85 |. 64:FF30 push dword ptr fs:[eax]
0050EE88 |. 64:8920 mov dword ptr fs:[eax],esp
0050EE8B |. BB D9D10E00 mov ebx,0ED1D9 ; 初始化ebx=0ED1D9(即十进制971225)
0050EE90 |. 8D45 FC lea eax,dword ptr ss:[ebp-4]
0050EE93 |. BA 58EF5000 mov edx,Unpacked.0050EF58 ; ASCII "wangshuang"
0050EE98 |. E8 8B5EEFFF call Unpacked.00404D28
0050EE9D |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
0050EEA0 |. E8 A360EFFF call Unpacked.00404F48 ; 计算字符的长度,并放到eax
0050EEA5 |. 85C0 test eax,eax
0050EEA7 |. 7E 1B jle short Unpacked.0050EEC4
0050EEA9 |. BA 01000000 mov edx,1
0050EEAE |> 8B4D FC /mov ecx,dword ptr ss:[ebp-4]
0050EEB1 |. 0FB64C11 FF |movzx ecx,byte ptr ds:[ecx+edx-1] ; 逐位取"wangshuang"的每位ascii送到ecx
0050EEB6 |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4] ; ecx=ecx+4*ecx
0050EEB9 |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4] ; ecx=ecx+4*ecx
0050EEBC |. 03D9 |add ebx,ecx ; ebx=ebx+ecx(即等于971225+ecx)
0050EEBE |. 03DE |add ebx,esi ; 上面的值加上机器码(前面分析了esi中放的是机器码的十六进制)
0050EEC0 |. 42 |inc edx ; 指向下一位字符(edx=edx+1)
0050EEC1 |. 48 |dec eax ; 字符长度减一(eax=eax-1)
0050EEC2 |.^ 75 EA \jnz short Unpacked.0050EEAE ; 循环取
0050EEC4 |> 8D45 FC lea eax,dword ptr ss:[ebp-4]
0050EEC7 |. BA 6CEF5000 mov edx,Unpacked.0050EF6C ; 字符"yaoyuan"
0050EECC |. E8 575EEFFF call Unpacked.00404D28 ; 这里和上面调用同一call
0050EED1 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
0050EED4 |. E8 6F60EFFF call Unpacked.00404F48 ; 这里和上面调用同一call,
看作者写的是头头是道
,无奈我等小菜看不懂
,那些CALL关于算法的,而那些CALL是无用的,还有就是算法从那几句开始,到那里结束。
如何知道初始化EBX,计算字符的长度,并放到EAX中,还有逐位取假码,ECX=ECX+4*ECX等这些东西都是如何看出来的,你们是如何知道的,看我问的这问题,就知道是小儿科,但就是不懂所以才问的。如果想能看明白这些东西,要理解什么东西,我只是简单的知道汇编的意思,但如果注册码和汇编联系起来就看不出来了,比如:我知道inc edx意思就edx的值加1(汇编中的意思),但在分析算法时就成了,指向假码的下一位字符了。如lea ecx,dword ptr ds:[ecx+ecx*4]意思就是取ds:[ecx+ecx*4]的有效地址给ecx(汇编中),但在分析算法时就成了别的意思了!!这如何看出来,我想不仅是我,是刚学习算法入门的小菜都会遇到这问题,而论坛里整天搞些高深的算法,真有点不为我们这些入门的菜鸟负责啊(有点哭笑不得)。
每个人都要经历这个算法入门的阶段,你们是如何学习的,又是如何掌握的,高手们说下啊!!!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!