日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

007 未知加密壳

發(fā)布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 007 未知加密壳 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

      • 查殼
      • OD脫殼
      • 解密IAT
      • 修復(fù)導(dǎo)入表
      • 破解Crackme

查殼


目標(biāo)程序鏈接器版本是6.0 可能是VC6寫的程序 PEiD查殼沒有查出來,應(yīng)該是別人自寫的一個殼

OD脫殼

載入之后到達殼的入口點 采用單步跟蹤的方式找到程序的OEP 一直單步之后 到達OEP

在入口處 我們發(fā)現(xiàn)程序符合VC6的入口特征 但是第一個call并不是GetVersion
查看內(nèi)存 發(fā)現(xiàn)IAT被加密了 這個時候 如果直接dump內(nèi)存 程序就無法運行 必須先將IAT解密 解密IAT的方法就是找到寫入

IAT的位置 然后將函數(shù)原本未加密的地址寫回去 即可完成解密

解密IAT

所以 我們在IAT處下硬件寫入斷點 找到寫入IAT的地方

重啟程序 一直按F9找到加密IAT的地方


一般加密IAT的地方都會有一個規(guī)律 mov dword ptr ds:[edi],eax都是類似這樣的格式
找到IAT之后 一般有兩種處理方式 一是重啟程序 在LoadLibraryA/W GetProcAddress下API斷點 二是繼續(xù)單步跟蹤 找到IAT原本的地址 因為一般加密IAT的地方是個循環(huán) 這里我們采取第二種方法
單步幾次之后 我們發(fā)現(xiàn)程序使用GetProcAddress獲取到了函數(shù)地址 之后對這個地址進行了異或


之后又申請了一塊空間 將加密后的地址填充到這塊空間里


我們只需要將加密前的IAT填充回去就完成了解密

修改后的代碼如下


之后單步到OEP處


可以發(fā)現(xiàn) IAT解密已經(jīng)完成 然后dump文件 修復(fù)IAT即可
在手動修復(fù)IAT的時候要注意 當(dāng)單步跟蹤找到了寫入IAT和獲取IAT地址時 應(yīng)該重新加載程序 在程序?qū)懭隝AT之前完成對代碼的修改 因為如果在單步跟蹤的時候直接修改 這個時候程序已經(jīng)加密了部分的代碼 此時再去修復(fù)IAT就會出問題 但是如果用寫腳本的方式就不需要擔(dān)心這種問題

修復(fù)導(dǎo)入表

然而 當(dāng)我們使用ImportREC修復(fù)導(dǎo)入表時 我們發(fā)現(xiàn) 軟件并沒有能完整的識別所有的IAT信息 只搜索到兩個模塊的導(dǎo)入信息 在遇到這種情況一般采取的方法有兩種 一種是將ImportREC自動分析的RVA取整 Size增加到1000 這樣也能比較完整地分析全IAT表 只是會分析出很多無用函數(shù) 還有一種是手動查看IAT區(qū)域的基址和大小 然后填入ImportREC的RVA和Size中 這里我們采取第二種方法
先在OD中觀察IAT表的起始位置 是422000


然后找到結(jié)束位置 422504


由此得出IAT表的大小 是504
重新在ImportREC中指定RVA和Size 點擊獲取輸入表

在獲取到的函數(shù)地址中 會有一部分無效的 一般無效的看能否修復(fù) 如果可以修復(fù)就修復(fù) 如果不能修復(fù)就剪切掉
在分析的無效函數(shù)中 有一種轉(zhuǎn)發(fā)函數(shù) 被分析成了無效函數(shù) 如圖中的NtdllDefWindowProc_A

這種無效函數(shù)的成因其實是函數(shù)被轉(zhuǎn)發(fā)了 上面的函數(shù)在user32中的函數(shù)名的DefWindowProcA 而在user32模塊中這個函數(shù)地址空間并沒有實際的代碼 而只是一個函數(shù)名 類似的函數(shù)還有幾個
這種函數(shù)可以使用ImportREC修復(fù) 雙擊函數(shù)名 然后先選擇模塊 再填入函數(shù)名


如果還有無效函數(shù) 就右鍵剪切掉


當(dāng)沒有無效函數(shù)的時候 就可以轉(zhuǎn)儲文件了,程序正常運行

注意,我的運行環(huán)境是W7 64位,脫殼后的程序放到我的W10物理機上的跑不起來的

破解Crackme

既然是個Crackme,就順手把他干掉吧

根據(jù)字符串提示找到來自401557的地址

然后根據(jù)跳轉(zhuǎn)提示就來到了成功的地方

接著往上翻,發(fā)現(xiàn)這里有一個HackAv,直接輸入

提示成功,破解完成

需要相關(guān)文件可以到我的Github下載:https://github.com/TonyChen56/Unpack-Practice

總結(jié)

以上是生活随笔為你收集整理的007 未知加密壳的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。