dll注入技術,可以實現鉤取api,改進程式,修復bug。
dll注入指的是向執行中的其他程序強制插入特定的dll檔案。
dll注入命令程序自行呼叫loadlibrary()api,載入使用者指定的dll檔案。
dll被載入到程序後自動執行dllmain()函式,使用者把想執行的**放到此函式,載入dll時,**會被執行。
建立遠端執行緒(createremotethread()api)
訊息鉤取(setwindowshookex()api)
createremotethread遠端執行緒注入,直接使用注入程式將dll注入到notepad中。使用od的attach功能,和除錯事件,中斷於新模組載入。
登錄檔的位置:hkey_local_machine\software\microsoft\windows nt\currentversion\windows 修改後需要重啟電腦。
載入dll是驅使目標呼叫loadlibrary()api
解除安裝dll是驅使目標呼叫freelibrary()api
image_optional_header 的 import table 即為 idt,修改rva及記憶體大小。
修改匯入表rva的值。
刪除繫結匯入表(bound import table )將值改為0即可。
複製原有idt到新idt位址。
新增新的iid結構。(iid結構我是手寫不出來的,我也記不住,需要的時候查一下就ok了)。
主要就是int name iat
如果新增的iat在image_optional_header 的iat區域內,就不需要修改許可權,否則,必須賦予新增的iat的寫入許可權。
主要功能,轉儲和修改pe頭,我都不熟練0.0.0.
占用記憶體少,難以查詢,適用於**量小,簡單。
使用了od的中斷於新執行緒事件。
主要就是分析注入**,沒什麼好寫的,**分析在我的另一篇部落格 **注入。
od彙編,分析**功能,編輯字串,long->address功能。
有意思的是,call指令的動作原理,call可以實現push加jmp。
還有棧幀的使用。
逆向學習 BUUCTF xor
int cdecl main int argc,const char ar const char envp 由此,我們知道,在global存放的字串是執行過上述演算法後得到的字串,所以,將上面的字串反過來處理也就能得到flag了。str1 f 0x0a k 0x0c w o 0x11 x 0x0d ...
逆向學習法
第一次聽說逆向學習法是在上大學時,一次上網看英語學習的 有人提出了逆向學習英語的方法宗旨就是聽寫,也就是直接聽錄音,然後寫下錄音中的句子,之後再學習句子。到現在自己也一直在學習,更在不斷的探尋學習的最佳方法,現在回望自己的學習之路,總結了下發現很多的學習效果不明顯,效率低下,因為都是先去看書學習一門...
IOS逆向學習 Cycipt
cycript 進入cycript語言程式設計環境 ctrl d 退出除錯環境 ctrl c 取消輸入 定義變數 var 變數名 變數值 objectivec.classes 已載入的所有oc類 檢視物件的所有成員變數 物件 遞迴列印view的所有子控制項 跟lldb一樣的函式 view.recur...