国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
用特征碼定位關(guān)鍵代碼

http://www.cnblogs.com/moodlxs/archive/2009/05/30/2345403.html

【文章標(biāo)題】: 必殺技公布——用特征碼定位關(guān)鍵代碼,秒殺MFC程序

【文章作者】: 書(shū)呆彭
【下載地址】: 自己搜索下載
【使用工具】: VC與OllyICE
【作者聲明】: 只是感興趣,沒(méi)有其他目的。失誤之處敬請(qǐng)諸位大俠賜教!
--------------------------------------------------------------------------------

我的補(bǔ)充:

一些特征碼:

(vc6 sp6 ) mfc42d.dll   :    call [ebp-4]

(vs 2008 )mfc90ud.dll :    call [ebp-8]

--------------------------------------------------------------------------------


【詳細(xì)過(guò)程】
   本文所講的方法,其實(shí)是一個(gè)很古老的方法了。以前,考慮到此法的殺傷力巨大,不便于公布。
  
   隨著軟件開(kāi)發(fā)者保護(hù)意識(shí)的提高和軟件保護(hù)技術(shù)的發(fā)展,此法的殺傷力逐漸下降成為普通等級(jí)。
  
   我本人這學(xué)期的課程和任務(wù)十分多,打算暫時(shí)把程序調(diào)試這個(gè)業(yè)余愛(ài)好放一放,估計(jì)至少會(huì)有半年時(shí)間不常來(lái)看雪了。
  
   把這個(gè)方法寫(xiě)出來(lái),算是給大家的告別禮物。
  
  
  
   對(duì)于直接使用SDK而不使用第三方庫(kù)的程序,我們要定位到程序的“關(guān)鍵代碼”并不困難。通常在CreateWindow函數(shù)或DialogBoxParam函數(shù)下斷點(diǎn),可以直接獲得其主界面的窗口過(guò)程或?qū)υ捒蜻^(guò)程。但是對(duì)于使用了MFC的程序,我們找到的窗口過(guò)程或?qū)υ捒蜻^(guò)程是在MFC提供的程序框架的內(nèi)部,經(jīng)過(guò)層層的分發(fā)和篩選,消息才最終到達(dá)用戶代碼,直接分析起來(lái)比較繁瑣。
  
   幸好,有一個(gè)Olly的腳本,可以直接幫助我們找到諸如OnOK()之類的函數(shù)。這個(gè)腳本用到的方法,是建立在對(duì)MFC內(nèi)部機(jī)制充分理解的基礎(chǔ)上,通過(guò)在消息分發(fā)的代碼處下條件斷點(diǎn)而完成的。
  
   然而,我馬上要講到的這個(gè)方法,在一定程度上,比這個(gè)腳本還好使,可以一下就定位到我們感興趣的代碼處。而且,可以舉一反三,如果你看明白了其中的思路,可以自己擴(kuò)展成為十分強(qiáng)大的“必殺技”,不僅對(duì)MFC,對(duì)其它的應(yīng)用程序框架也有效果。
  
  
   我就不講我如何想到的這個(gè)方法,只講兩個(gè)例子。如果你看懂了這個(gè)例子,其中的思路肯定會(huì)明白了。而且,十分簡(jiǎn)單。
  
  
   我以MFC42為例。先打開(kāi)VC6,創(chuàng)建一個(gè)MFC的對(duì)話框程序,按默認(rèn)設(shè)置。我們?cè)凇癘K”按鈕的處理函數(shù)OnOK()的開(kāi)頭,寫(xiě)上這樣一句:
  
   __asm   int 3
  
   然后,按Release編譯。
  
   現(xiàn)在,用OD調(diào)試程序,不要忽略int3異常,F(xiàn)9運(yùn)行,點(diǎn)擊“OK”,OD馬上斷下。
  
   看堆棧:
  
   代碼:    0012F80C     73EFE938    返回到 MFC42.73EFE938    0012F810     00000000    0012F814     004022E8    MFCDialo.004022E8  
  
  
   我們到 MFC42.73EFE938這看一下:
  
   代碼:    73EFE932      8B4D 08           MOV       ECX, DWORD PTR SS:[EBP+8]    73EFE935      FF55 14           CALL      DWORD PTR SS:[EBP+14]              ; 這句就是調(diào)用用戶函數(shù)的CALL    73EFE938      5F                POP       EDI                                ; 這就是堆棧中的 MFC42.73EFE938    73EFE939      8BC6              MOV       EAX, ESI    ...  
  
   我們看到,73EFE935處的CALL [EBP+14]的目標(biāo)函數(shù)就是我們的OnOK()。記住這個(gè)地址。
  
   我們按ALT+E,打開(kāi)模塊列表,雙擊下面MFC42.dll這一行:
  
   代碼:    Executable modules    基址         大小         入口         名稱         文件版本            路徑    00400000     00005000     00401780     MFCSigna     1, 0, 0, 1          F:/Documents/MY CODE/MFCDialog/Release/MFCDialog.exe    00460000     0009B000     00486E23     ADVAPI32     5.2.3790.3959 (s    D:/WINDOWS/syswow64/ADVAPI32.dll    00500000     0008B000     0050155C     OLEAUT32     5.2.3790.4202       D:/WINDOWS/syswow64/OLEAUT32.dll    00590000     00052000     005A006D     SHLWAPI      6.00.3790.3959 (    D:/WINDOWS/syswow64/SHLWAPI.dll    02160000     00017000                odbcint      3.526.1830.0 (sr    D:/WINDOWS/system32/odbcint.dll    48890000     0003D000     488C5681     ODBC32       3.526.3959.0 (sr    D:/WINDOWS/system32/ODBC32.dll    4B3C0000     00050000     4B3C1574     MSCTF        5.2.3790.3959 (s    D:/WINDOWS/SysWOW64/MSCTF.dll    4DC30000     0002E000     4DC49F69     msctfime     5.2.3790.3959 (s    D:/WINDOWS/system32/msctfime.ime    71BB0000     00009000     71BB1060     WSOCK32      5.2.3790.0 (srv0    D:/WINDOWS/system32/WSOCK32.dll    71BF0000     00008000     71BF123D     WS2HELP      5.2.3790.1830 (s    D:/WINDOWS/system32/WS2HELP.dll    71C00000     00017000     71C02560     WS2_32       5.2.3790.3959 (s    D:/WINDOWS/system32/WS2_32.dll    73EB0000     00121000     73F84A8E     MFC42        6.06.8063.0         D:/WINDOWS/system32/MFC42.DLL    75490000     00065000     754C93CA     USP10        1.0422.3790.3959    D:/WINDOWS/system32/USP10.dll    75E60000     00027000     75E61239     apphelp      5.2.3790.3959 (s    D:/WINDOWS/system32/apphelp.dll    76190000     00012000     76193341     MSASN1       5.2.3790.3959 (s    D:/WINDOWS/syswow64/MSASN1.dll    761B0000     00093000     761B15FA     CRYPT32      5.131.3790.3959     D:/WINDOWS/syswow64/CRYPT32.dll    762B0000     00049000     762B16A5     comdlg32     6.00.3790.3959 (    D:/WINDOWS/syswow64/comdlg32.dll    77210000     000AB000     772115A2     WININET      6.00.3790.4392 (    D:/WINDOWS/syswow64/WININET.dll    77530000     00097000     775948BA     COMCTL32     5.82 (srv03_sp2_    D:/WINDOWS/WinSxS/x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.3959_x-ww_78FCF8D0/COMCTL32.dll    77670000     00139000     776BC692     ole32        5.2.3790.3959 (s    D:/WINDOWS/syswow64/ole32.dll    77BA0000     0005A000     77BAF78B     msvcrt       7.0.3790.3959 (s    D:/WINDOWS/syswow64/msvcrt.dll    7C8D0000     007FF000     7C92BB2B     SHELL32      6.00.3790.4184 (    D:/WINDOWS/syswow64/SHELL32.dll    7D4C0000     00130000     7D4DFD59     kernel32     5.2.3790.4062 (s    D:/WINDOWS/syswow64/kernel32.dll    7D600000     000F0000                ntdll        5.2.3790.3959 (s    D:/WINDOWS/system32/ntdll.dll    7D800000     00090000     7D82B710     GDI32        5.2.3790.4396 (s    D:/WINDOWS/syswow64/GDI32.dll    7D8D0000     00050000     7D8E0E4B     Secur32      5.2.3790.3959 (s    D:/WINDOWS/syswow64/Secur32.dll    7D930000     000D0000     7D969635     USER32       5.2.3790.4033 (s    D:/WINDOWS/syswow64/USER32.dll    7DA20000     000E0000     7DA3049E     RPCRT4       5.2.3790.4115 (s    D:/WINDOWS/syswow64/RPCRT4.dll    7DBC0000     00009000     7DBC12E2     LPK          5.2.3790.3959 (s    D:/WINDOWS/system32/LPK.DLL    7DBD0000     00103000     7DC5A99E     comctl_1     6.0 (srv03_sp2_r    D:/WINDOWS/WinSxS/WOW64_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_5FA17F4E/comctl32.dll    7DEE0000     00060000     7DEF02D0     IMM32        5.2.3790.3959 (s    D:/WINDOWS/system32/IMM32.DLL    7DF50000     00070000     7DF637D7     uxtheme      6.00.3790.3959 (    D:/WINDOWS/system32/uxtheme.dll  
  
   就來(lái)到了MFC42.DLL這個(gè)模塊的.text節(jié)了。好,我們按Ctrl+F,輸入CALL [EBP+0X14],回車。搜索到的第一個(gè)結(jié)果就是:
  
   代碼:    73EFE935      FF55 14           CALL      DWORD PTR SS:[EBP+14]              ; 這句就是調(diào)用用戶函數(shù)的CALL  
  
  
   現(xiàn)在明白本文題目的意思了吧。。。
  
  
   下面來(lái)看看此法的應(yīng)用。
  
   隨便找一個(gè)MFC42的CM,用OD載入,有殼,不用管,直接F9,然后ALT+E,雙擊MFC42.DLL,CTRL+F,輸入CALL [EBP+14],在第一個(gè)找到的地址處F2下斷點(diǎn)。
  
   點(diǎn)CM的確定按鈕,OD斷下,F(xiàn)2刪除斷點(diǎn),F(xiàn)7。
  
   這里就是按鈕的處理函數(shù)。可以分析了。
  
  
--------------------------------------------------------------------------------
【經(jīng)驗(yàn)總結(jié)】
   如果你看明白了我的過(guò)程,那么你也應(yīng)該明白我的思路。
  
   MFC42.DLL的特征碼就是指令CALL [EBP+14]
  
   順便說(shuō)一下,所有的按鈕控件的處理函數(shù)OnXXXClick()都經(jīng)過(guò)這里。并且,編輯框控件的OnChange()函數(shù),以及其它很多控
   件的消息,比如CheckBox的消息,甚至OnClose()也都經(jīng)過(guò)這里。什么原因呢?因?yàn)镸FC框架的消息分發(fā)過(guò)程,是按參數(shù)類型
   模板分類的。如果不理解,就不用理解了,只要記住方法就行了。
  
   另外,對(duì)所有的MFC程序,如MFC71D,MFC90U等,這個(gè)方法都可以用,并且靜態(tài)連接的也可以,并且Delphi的程序也可以,只
   要掌握了原理,方法大同小異。至于各自的“特征碼”是什么,自己去找吧。
  
  
   祝同學(xué)們?cè)缛粘蔀楦呤帧?/p>

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
利用VC調(diào)用動(dòng)態(tài)鏈接庫(kù)中的函數(shù)
7月文章試讀:惡意代碼的親密接觸
加解密入門基礎(chǔ)知識(shí)(1)
vc調(diào)試適合入門
32位和64位操作系統(tǒng)與System,System32,Syswow64的區(qū)別
比較QT和MFC兩個(gè)界面庫(kù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服