逆向工程学习笔记(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的问题