出于無聊和記事本確實不怎么好用的目的,所以準備給記事本添加上下翻頁的功能。
首先要做的事情就是修改程序入口點,這樣一來才能優先獲取程序的控制權,廢話就不多說了。
1. 想要修改程序的入口點首先就要觀察下程序員先的入口點在什么位置,這樣一來等我們的處理完畢后還是要把控制權還給記事本,以免出現錯誤。
用LoadPE看看記事本的一些信息
從這里可以很清楚的發現磁盤文件入口在400偏移處而文件對齊是7800字節大小,實際使用的是7748字節大小,那么也就是說7800-7748=b8h空間可以供我們插入代碼
2. 知道了即將插入代碼的地方,那么就準備好機器碼以便處理,這里我們先只修改程序入口,其余的操作以后再寫。
從這里我們可以看到程序原先的入口偏移地址在739dh處,也就是說我們做完自己的處理后要跳轉到這里。
B8 9D 73 00 01 ff E0
這便是
mov eax, 0100739dh
jmp eax
的機器碼
3. 修改文件入口
因為文件偏移地址為400h而實際使用的字節數為7748h那么也就是說我們要在 7b49h處插入我們的代碼。(再聲明一次,時間有限今天只能寫修改入口,至于其他操作,后面有時間的時候再繼續寫)
用UE打開notepade.exe,在空隙處插入我們新的入口代碼
4. 修改程序入口點
因為原先的代碼段偏移地址為1000h,而實際.text節大小為7748那么也就是說新的程序入口應該是7748h+1000h=8749h
修改完畢后點擊Sava。
再次運行notepad.exe
沒有任何異常,那么修改程序入口成功。
當然你可能認為什么都還么做呢。呵呵,入口控制權被拿到了,那么接下來就可以自由發揮了。
時間有限,下次將在今天修改的入口點給notepad.exe載入我們的dll文件,緊接著,用我們的dlll來處理記事本的翻頁功能待續…
2、手工修改可以獲得更大挑戰性及其產生的更大樂趣
贊同,本來就是玩玩,用工具就沒意思了
可否補充說明一點實現細節
看下PE文件的資料吧
整天在黑漆漆的反匯編里轉
還是C++的世界光明啊
http://www.pediy.com/bbshtml/bbs8/pediy8-266.htm
http://www.pediy.com/bbshtml/bbs8/pediy8-260.htm
有機會請教下。。呵呵