逆向工程核心原理-1


总结

软件使用方面

这些天主要就是跟着书本上的案例,使用OllyDbg对程序进行逆向分析。

跟着书上做,总体过程还是比较顺利,但是对于大段的汇编代码,阅读起来实在是费劲。这还是在有注释的情况下进行分析。如果连课本的引导和注释都没有的话,想必难度会成指数增长。如果有机会真的想了解那些做外挂的是怎么弄的。

思考

为什么32位计算机或者64位计算机可以兼容以前16位版本的程序

从汇编的角度上来看的话,16位、32位、64位 AX BX AL AH 等寄存器的含义都是一样的。唯一不同的地方体现在EAX是32位的。RAX是64位的。

x64寄存器的命名规则

LEA(Load Effective Address )指令和MOV指令的区别

参考链接:https://www.jianshu.com/p/3e89d834df85

LEA 指令要求原操作数必须是存储单元,而且目的操作数必须是一个除段寄存器之外的16位或32位寄存器。当目的操作数是16位通用寄存器时,那么只装入有效地址的低16位。使用时要注意它与MOV指令的区别,MOV指令传送的一般是源操作数中的内容而不是地址。

假设 SI=1000H, DS=5000H, (51000H)=1234H
执行指令 LEA BX, [SI] 后 BX=1000H
执行指令 MOV BX,[SI] 后 BX=1234H
LEA BX,XXX可以用 MOV BX,OFFSET XXX来替代

但有些时候,必须要用LEA指令来完成某些功能,不能用MOV指令来实现,必须用LEA指令。

LEA BX,6[DI]

解释: 某数组含20个元素,每个元素占一个字节,序号为0~19。设DI指向数组开头处,如果把序号为6的元素的偏移地址送到BX中。就必须使用LEA指令。因为OFFSET 运算符只能返回数据标号的偏移量,然而并不是所有的内存单元都有数据标号。


文章作者: 美食家李老叭
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 美食家李老叭 !
评论
  目录