最近看的是滴水逆向的视频 感觉讲的很不错,我的主方向是学pwn的
但是没有办法,要先学reverse,就边看边学,记一下笔记
任何文件保存在内存中,全是数字
计算机只认识二进制
二进制转十六进制必须熟悉,做逆向需要很敏感
硬编码
需要用到c语言,汇编语言,二进制的知识
逻辑运算
与 (and &)
全真为真 即全是1 结果才能为1 就是两个开关串联
![](https://img-blog.csdnimg.cn/img_convert/2949fc5d95e5591499242e858fd66a47.png)
异或 (xor ^)
不同为1 相同为0
![](https://img-blog.csdnimg.cn/img_convert/e06bf17b8b3737cf66c05ba1925d205b.png)
非 (not !)就是取反
1 的非运算结果为0 0的结果为1
计算机的计算过程
2+3=?
转换成二进制
2 0010
3 0011
先进行异或运算 取x=0010 y=0011
![](https://img-blog.csdnimg.cn/img_convert/76040a8765ef7fd8b19e2027ee77b2e6.png)
得到结果(1)0001(暂定)
再将二者进行与运算 得到的结果(1)再进行左移一位 得到结果(2)用于判定计算是否全部完成
![](https://img-blog.csdnimg.cn/img_convert/3b85336f08f130333cb78e9dc3defdbf.png)
此处的结果(2)为0010 结果(3)为0100
判定的方式为结果(3)是否为0 若为零 停止计算 结果(1)为最终结果
若结果(3)不为零 则继续计算
此时x y 的值发生变化
赋值:
x=结果(1)
y=结果(2)
再次进入异或 与 位移运算 得到新的结果1 2 3,再进行判定
例如上题
此时新的运算如下
![](https://img-blog.csdnimg.cn/img_convert/ee5754408277e76077958fd2e7e25b7a.png)
结果3为0 停止运算
结果1 0101 为最终结果