|
这一次我们就先来学习一下“基本的汇编知识”
因为汇编对于破解来讲十分重要,下面介绍一些专门用于软件破解的重要汇编语句, 要学习软件破解技术就一定要把这些汇编语句牢记在心。
第一类:赋值语句
mov a,b // 把b值送给a,使a=b
怎样理解“把b值送给a”这句话呢?举一个例子吧。
假设现在:a=1,b=2
那么执行了“mov a,b”这条汇编语句以后,现在a与b的值就变成了
a=2,b=2.就是说用b中的值去替换a中的值。
第二类:比较语句
cmp a,b // 比较a与b
什么叫做“ 比较a与b”呢?
假设现在:a=1,b=2
那么执行了“cmp a,b”后,程序就会把 1与2进行比较。
至于比较的结果如何,那就要涉及到其他的语句了。
以上两个语句是赋值语句与比较语句中最常用也是最具代表性的。对于入门者来说,在赋值语句与比较语句这两个大类中,掌握 mov和 cmp 这两个语句就足够了。
第三类:跳转语句:
这一类语句所包含的对象比较多,一一来做以说明:
1) je或jz // 相等则跳(机器码是74或84)
意思就是:如果a与b中的值相等,程序就会跳向指定的地方去执行
2) jne或jnz // 不相等则跳(机器码是75或85)
意思与上一语句恰恰相反:如果a与b中的值不相等,程序就会跳向指定的地方去执行
3)jmp // 无条件跳(机器码是EB)
这个跳转语句比较“霸道”。不论什么情况,只要遇到它程序就会跳向指定的地方去执行
4) jb // 若小于则跳
这个语句的意思是:如果a中的值小于b中的值,程序就会跳向指定的地方去执行
与它对应的语句是: ja // 若大于则跳。意义刚好相反
还有以下一些常见的语句作用与它相似: jg // 若大于则跳 , jge // 若大于等于则跳
l // 若小于则跳。
第四类:调用子程序语句:
调用子程序语句就是call 语句,它的作用就是在程序运行时在需要的情况下调用相应的
子程序来运行。
第五类:无作用语句:
就是:NOP语句,这个语句在以后的软件爆破中应用的十分广泛。它的作用就是:当程序遇到它时,不做任何事情,无条件的执行它后面的语句。
以上代码就是前文所说的基本的汇编语句,这些常用的语句在以后的破解应用中会大量的应用到。所以无论你用什么方法,一定要记住。这样才能更好的进行后面的学习。 |
|
|