逆向工程學習筆記(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的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章