手脫64位UPX殼

2021-09-25 20:33:36 字數 2192 閱讀 5523

背景

近期舍友不知道為啥忽然要漢化乙個gta的外掛程式,第一次聽說他要漢化,問了我一堆關於逆向的東西。由於外掛程式加了upx的殼(也是peid說的,我感覺是乙個很奇怪的殼),他搞不定於是發來給我。

我平時也是逆向linux的elf檔案多一些,windows的而且還是64位的幾乎沒搞過,平時也沒脫過什麼殼,也就是聽說過原理而已(感覺不難),再加上我之前的電腦壞掉了返廠修了,新電腦剛到手,什麼環境都沒有,需要現搭建,雖然比較麻煩,不過畢竟就是脫個殼而已,原理啥的我也聽說過,正好到了週末也可以試試。

分析軟體

拿到程式之後我下了個52破解的虛擬機器,發現是32位的,由於程式是64位的,導致裡面的工具都用不了…哭。不過也沒事,就是脫個殼,直接下乙個動態除錯的工具就行,屬實沒弄過64位的windows程式,下了個x64dbg,之前沒用過,開啟之後發現介面還有快捷鍵和od幾乎一樣,小開心一波。

脫殼過程

脫殼過程有點容易…我先一直單步執行,執行到乙個向上跳轉的地方,按照單步執行的原則,我需要直接執行到它的下一句,於是我在下一句下斷點然後點執行:

結果它停到了乙個奇怪的地方:

**忽然變得好看了,然後程式中關於段的名字也變成了程式原本的名字modest-menu,而不是之前的ntdll而且位址段也從之前的7ff9…變為了1400…跨度相當大。

​ 圖:之前程式中關於位址段描述都是ntdll

我有丶理由相信這裡是oep,然後我記得我應該將這個程式從記憶體中dump下來然後匯入iat輸入表等操作,檢視了一下我只有這麼個外掛程式:

開啟看了下基本能滿足需求:

點了下轉儲,然後點iat自動搜尋和獲取輸入表,乙個也沒找到…

這說明我oep找錯了,這麼好看的地方都不是oep,那我只能繼續向後找。因為這是第一次跳到這裡,在這之前一直都在ntdll的地方執行,oep肯定不會只在那裡,所以我只能向後找。我知道這個程式剛開啟由於我沒有gta程序,他會彈窗告訴我沒有找到gta,所以我一句一句執行到彈窗的**,那麼者之間就會存在oep,而且說不定oep也很明顯就會被發現:

直行道方框**處就會彈窗,其實oep就在摺頁的上方圓圈的地方,只是當時我沒有發現,不過也確實沒有發現,這種操作確實很少見(可能我經驗比較少吧,也可能是這個程式很奇怪,比較整個程式剛進去就是乙個ret)。

確定了oep的區段之後我又重新的在這一段中執行了一遍,我發現了乙個大跳**

這裡就是這個軟體坑的地方了,這句**是從別的地方跳過來的,它直接把游標放在了第一行,我也不知道上文是什麼內容,導致我第一遍忽略了。換一種方式看這句**絕對不會被忽略:

這麼一看,這句**確實意義非凡,直接跳到了oep:

現在我選擇匯出,然後搜尋iat,獲取輸入表就發現了,但第一次有幾個無效選項,我以為是工具用的不對,又下了chimprec,最後搞了好久還缺vs執行庫什麼的。(新環境好麻煩)最後又回到這個外掛程式忽然發現沒有無效選項了…(神奇)或許和我裝了vs的執行庫有關…

最後成功脫殼,脫殼後的程式可以執行,並且在ida裡看到了原來程式的字串:

然後交給我舍友去漢化了。

感觸也沒啥感觸,感覺脫個64位殼也不過如此嘛。

手脫UPX殼方法介紹

方法1 單步跟蹤 f8單步跟蹤,向上不能讓他跳,有loopd迴圈也一樣 跳轉的下一行按f4 執行到選定位置,迴圈loopd在call下一句f4執行 只允許向下跳,如單步跟蹤call處程式執行,則需要過載程式,再call處f7跟進 近call f7,遠call f8 pushad 入棧 popad 出...

ximo脫殼1 手脫UPX殼

ximo脫殼之基礎教程第一課 手脫upx殼 upx殼為一種簡單的壓縮殼 除錯工具為peid和od 手脫upx有四種方式找到oep 第一種 單步跟蹤 第二種 esp定址 第三種 2次記憶體映象法 第四種 一次直達法 首先,開啟od,將示例程式 開啟該檔案之後,我們進行單步跟蹤 圖中標出的即為單步跟蹤的...

手動脫UPX 殼實戰

windows平台的加殼軟體還是比較多的,因此有非常多人對於 pc軟體的脫殼樂此不彼,本人菜鳥一枚,也學習一下 pc的脫殼。要對軟體進行脫殼。首先第一步就是 查殼。然後才是 脫殼。pe detective exeinfo pe die 工具。須要脫殼的程式是吾愛破解論壇的windows 逆向破解培訓...