逆向工程学习笔记(1)

2020.11.6

1.找main函数的方法

1.找输出法:如果main函数有输出内容,不断F8直到有输出。重新运行,打断点+F4+F7进入函数,继续F8。。。直到看到标志性内容

2.字符串查找法:如果能确定输出是连续字符串,可以直接找。右键-搜索,然后去引用里找就行了

2.lea,mov,[]的区别

对于lea指令

第二操作数是寄存器且必须加[],代表取值,并将该值存到第一操作数里

对于mov指令

不加[]代表取值,加[]代表取地址

3.妙妙的x++与++x实验

大葱昨天半夜给了我一份奇怪的代码,反正运行出来的结果很奇怪

今天实验一下

对于这种索引里带语句的,猜测代码运行的优先级应该如下:

左侧++x > 左侧取地址 > 左侧x++ > 右侧++x > 右侧求值 > 右侧x++ > 赋值

(1 对于左右侧都有++x,x++而且都是在索引的情况,符合预期


(2 右侧的x不是索引

E1:这种可以正常编译

E2:这种却根本不能编译

真是神奇

E3:如果把右侧的x+1改成x++,却能编译并运行。。。且反编译符合预期

E4:不过如果这样写,却和E2不一样,它能编译!但是却不符合预期,右侧x++优先于取值进行了!

调换1和x++的顺序,结果也没有改变

我蒙了。。。以后看看编译器是咋写的,是不是辣鸡mingw的问题

原文地址:https://www.cnblogs.com/guapisolo/p/13985384.html