我应该知道二进制逻辑的任何属性吗?
例如,
if x AND 3 == 0
,表示x可以被4整除。(0 - x) AND 3
,是一个值远离4n的距离。即(0 - 5) AND 3 = 3
和5 + 3 = 8
,可被4整除我是否还需要熟悉其他属性才能在逆向代码工程中取得优异成绩?
我在哪里可以找到它们?有什么建议可以让我增加知识吗?
答案 0 :(得分:2)
嗯,有一个few ;)
人们经常使用二进制逻辑快捷方式,因为它们映射到高效的计算机指令 - 毕竟处理器基于二进制逻辑。
De Morgan's laws之类的东西在更高级语言编程时可能更有用,但也适用于汇编。在逆向工程方面,对处理器的整体熟悉是最重要的,因为编译器可以添加许多棘手的代码,您可能需要逐步通过/ etc来理解。
我建议先学习个人微处理器。像PIC或AVR(Arduino)之类的东西。
第一个例子也是由于二进制如何工作 - 确保你熟悉它(以及十六进制表示)。
第二个通过整数环mod 2 ^ 2得到最好的解释。所有未编程的算术对应于整数mod 2 ^ n环中的运算,例如对应于Z mod 2 ^ 32的32位无符号整数。