組合語言學習心得

學期結束了,趁寒假打一下這篇心得

這是二年級的必修課程 組合語言 我們的老師是 李志仁

基本上就是把智商降到很低 去跟Debug玩的課程

學習在1MB下的環境寫程式

不像物件導向(OOP) 動輒就數倍以上的記憶體

基本上就是學會基本的輸入、輸出、四則與巨集、副程式、如何轉移控制權等等

比較深刻的是看堆疊區段吧,因為能弄好堆疊其實很多事都不是難題

像是副程式要做控制權轉移時就常用堆疊 push 再 call ((把C寫的function丟到Ollydbg也是這樣寫

然後就是那一堆的定址模式、一堆的跳轉指令、一些旗標跟暫存器

總之,還蠻好玩的可以見下面是我這學期的組語作業:

https://github.com/unromanticman/ASM_Homework

雖然自己以後是用不太到ASM,但是至少能夠看懂跟拿來用就好

其實上完後對逆向也有比較深刻的認識 畢竟寫的是組合語言((有夠低階

不過比較可惜的是最後開始講中斷時我幾乎都在恍神...因為感覺用不到((嘖嘖

不過可以知道INT 21 後面 其實是對應到一個4Bytes的位置 然後再由那個位置到某地方去找程式碼來用,算是以後自己在寫時能夠效仿

好像也沒有什麼要說了,總之謝謝老師真的是有實力又會講阿!

(ps.話說這堂課最後拿了97 不過我還是逆不出CandyCrush ... 想做智能搜尋但記憶體位置太高了。20160127...補充 之後找到002XXXXX的記憶體位置 就是寫入eax的位置 ...但是那區塊的記憶體會一直變動,直到寫入時才會正常 ... 不知道是不是某種檢查機制