一、VB程式
其實,VB的按紐事件的找法是最為普遍的,也就是大家所謂的萬能斷點.其實也不僅僅是針對按紐事件,還有很多其他的用處,如取消NAG,啟動框,灰色按紐或隱藏按紐,啟動時的timer事件等等,具體的就自己去總結吧,這裡只示範按紐事件!
OD載入後,CTRL+B,816C24
確定後,就會來到處:
然後,就在下面的JMP處F2下斷,下完後CTRL+L,如果還有,就繼續下斷點.
下完斷點後,運行程式,點擊相應的按紐,OD就會斷下來了
下面的任務就是考驗大家的耐心,F8跟蹤吧,不再贅述了.
當然,為了方便大家,可以寫個簡單的指令碼,免的每次都去手動設定了,節省時間: 複製內容到剪貼簿 代碼:var Addr
mov Addr,401000
loop:
find Addr,#816C2404??000000#
cmp $RESULT,0
je Exit
add $RESULT,08
bp $RESULT
add $RESULT,1
mov Addr,$RESULT
jmp loop
Exit:
eval "按紐事件尋找完畢!"
msg $RESULT
ret
二、Delphi和BC++程式
Delphi和BC++都是同一公司開發的,故尋找方法都一樣,當然你也可以使用DEDE.
OD載入後,CTRL+G,轉到00401000處
然後就CTRL+B,尋找特徵碼740E8BD38B83????????FF93????????
然後就會找到下面的地方:
然後就在下面的CALL處下斷吧.
下面的工作就是不斷的CTRL+L繼續尋找和F2下斷了.
運行下看看效果吧:
看,斷下了吧,下面就F7跟進這個CALL吧,就來到這個按紐事件處了.
同樣寫個指令碼,方便大家操作: 複製內容到剪貼簿 代碼:var Addr
mov Addr,401000
loop:
find Addr,#740E8BD38B83????????FF93????????#
cmp $RESULT,0
je Exit
add $RESULT,0A
bp $RESULT
add $RESULT,1
mov Addr,$RESULT
jmp loop
Exit:
ret
三、易語言
易語言的這種尋找方法,同樣適合有殼的程式,其他的就必須脫殼後再繼續操作了.
OD載入後,就F9運行程式吧,當程式運行後,ALT+E
選中易語言的核心庫krnln,雙擊進去
然後CTRL+B,尋找FF 55 FC
尋找到的這個CALL就是了,F2下斷吧
現在輸入必須的內容後,單擊對應的按紐吧
看,斷下了吧,下面就F7跟進吧,就來到按紐事件處了
同樣,寫個指令碼,方便大家 複製內容到剪貼簿 代碼:gpa"GetProcessHeap","kernel32.dll"
cmp $RESULT,0
je err
bp $RESULT
run
run
run
bc $RESULT
rtu
find 10001000,#FF55FC5F5E895D??8945#
bp $RESULT
find eip,#FFE0#
cmp$RESULT,0
je err
bp $RESULT
run
bc $RESULT
sto
MSG "按紐事件尋找完畢!"
ret
err:
MSG "指令碼運行錯誤!請檢查錯誤後再繼續運行指令碼!"
ret
四、VC++程式(非MFC程式)
OD載入後,單擊滑鼠右鍵,選擇"尋找",然後是"所有命令"
在彈出的輸入框裡,寫入特徵代碼"sub eax,0a"
10.GIF (7 KB)
2008-9-14 12:02
確定後,就來到下面的視窗
在下面的sub eax,0A處,雙擊進去吧:
12.GIF (16 KB)
2008-9-14 12:02
來找這裡後,在下面的je處跟隨過去
跟隨來到的這個CALL,就是了,F2下斷吧
然後斷下後,F7跟進,F8幾次,就來到按紐事件了.
五、MFC類程式
當然判斷MFC和非MFC的程式,靠大家自己去判斷了
OD載入後.ALT+E,來到可執行模組,找MFC的核心DLL:MFC42
然後就雙擊進去
然後就CTRL+F,尋找特徵代碼:sub eax,0a
同樣,找到後,就在下面的je處跟隨,跟隨後看到的CALL,就是那個關鍵CALL了!
斷下後F7跟進,F8幾次,就會來到按紐事件代碼處了!
方法就簡單的介紹到這裡了,當然只是拋磚引玉,其他的,還得多靠大家自己慢慢總結吧!
附件