-
-
[旧帖]
[求助]一个 OllyDBG 入门系列 中的疑问,请大大们解惑。
0.00雪花
-
发表于:
2007-4-29 09:37
14042
-
[旧帖] [求助]一个 OllyDBG 入门系列 中的疑问,请大大们解惑。
0.00雪花
我看到 OllyDBG 入门系列 的 函数参考 一节 ,
其中说到一个将 字符串 转化 为数字的 算法,
如下
004013F0 |> 2C 30 SUB AL,30 ; 每位字符减16进制的30,因为这里都是数字,如1的ASCII码是“31H”,减30H后为1,即我们平时看到的数值
004013F2 |. 8D0C89 LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; 把前面运算后保存在ECX中的结果乘5再送到ECX
004013F5 |. 8D0C48 LEA ECX,DWORD PTR DS:[EAX+ECX*2] ; 每位字符运算后的值与2倍上一位字符运算后值相加后送ECX
004013F8 |. 8A06 MOV AL,BYTE PTR DS:[ESI] ; 取下一个字符
004013FA |. 46 INC ESI ; 指针加1,指向再下一个字符
004013FB |> 0AC0 OR AL,AL
004013FD |.^ 75 F1 JNZ SHORT CrackHea.004013F0 ; 上面一条和这一条指令主要是用来判断是否已把用户输入的注册码计算完
算法基本看明白了,进一位就是 先*10 ,再加上个位。
为什么这里是先 *5,然后是*2 ,而不一次先*10 ?
[课程]FART 脱壳王!加量不加价!FART作者讲授!