AND 與運算.(位運算兩個比較數(shù)中的二進制數(shù)值各位有0則0) OR 或運算.(位運算兩個比較數(shù)中的二進制數(shù)值各位有1則1) XOR 異或運算.(位運算兩個比較數(shù)中的二進制數(shù)值各位相同則零)(寄存器與自己作異或運算等于清零動作) NOT 取反. TEST 測試.(兩操作數(shù)作與運算,僅修改標志位,不回送結(jié)果).
還有更多的匯編語句,我會打包給大家的....
三:我們開始動手實踐一下,,熟悉一下工具的使用
我們用記事本來做試驗吧,,先加個殼。好了,。加完后,,我們就用PEID來查一下是什么殼.... UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo UPX是一款壓縮殼...我們再把他載入OD來調(diào)試。載入后,,會提示,,點否! 01014770 > 60 PUSHAD 01014771 BE 00000101 MOV ESI,NOTEPAD.01010000 01014776 8DBE 0010FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF1000] 0101477C 57 PUSH EDI 0101477D 83CD FF OR EBP,FFFFFFFF 01014780 EB 10 JMP SHORT NOTEPAD.01014792 這里,,就是UPX殼的入口,,這個殼有很多種脫殼~我們今天就用單步直下脫殼法。畢竟我們只是了解一下工具的用法,。,。。 單步F8,,或者用工具欄的那個箭頭向下那個按鈕,!JMP(無條件跳轉(zhuǎn)),要是跳轉(zhuǎn)實現(xiàn)的話,,就會出現(xiàn)條紅線,。這里。他是向下跳,,我們就讓他跳吧,,如果像這種情況。向上跳的話,,我們就用到F4(在跳轉(zhuǎn)的下一行,,按下F4,或者,,右鍵-斷點-運行到選定位置)如果,,跳轉(zhuǎn)沒實現(xiàn),他就出現(xiàn)一條灰色的線,,實現(xiàn)就紅..只要他往上跳,,我們就下斷F4,。不讓他往會跳。一直往下單步,,在這里,,下完斷后,還有個JMP向上跳,,我們也一樣向下一行下斷后,,但是。他這里的下一行是一個NOP(無動作),。所以不能在這里F4,。我們在NOP的下一行下斷點,不好意思,。,。。手快了,。哈~~繼續(xù),!這里。在CALL這行下斷點,。OD會掛掉。只能在CALL的下一行下斷點,,我們試驗一下~看吧~~運行了,,OD掛了~點什么都沒反映了。,。,。我們返回程序的開始!重新開始單步....注意了,,就是這里...在這里下斷噢~好,。到了這個JMP。但他卻沒出現(xiàn)紅線,,是什么原因呢,。因為這里他實現(xiàn)了遠跳轉(zhuǎn),所以沒出現(xiàn)紅線,。我們F8,。。,。好,,一般遠跳轉(zhuǎn)后,就是OEP,,這里也就是傳說中的OEP,。 不好意思,,按錯了...繼續(xù) 接著。就用LordPE這個,,把程序DUMP下來~~看操作~完整轉(zhuǎn)存?。〉@樣子程序還是不能運行,。得用到ImportREC這個來修復(fù)一下~看操作~這里,因為路徑太張了,。看不到記事本的路徑,,你們只知道,,這里選擇那個記事本的路徑就對了.... 他的OEP地址0100739D-01000000=739D (01000000是他程序的基址) 點自動搜索IAT,發(fā)現(xiàn)某些數(shù)據(jù),。,。點確定,獲取輸入表,。修復(fù)捉取文件,。OK。,。我們?nèi)タ纯茨懿荒苓\行~可以運行~查一下殼~OK Microsoft Visual C++ 7.0 Method2