脫殼入門(五)之15Pack殼

2021-09-25 23:29:49 字數 1827 閱讀 8804

查殼:沒查到殼,但是呢入口點沒有指向.text**段,而且區段也有點可疑,15pack像是人為起的名字。編譯器版本6.0(vc6.0或者是易語言程式)

尋找oep:入口**看起來很像oep,我們進第乙個call看一下api呼叫,

發現這應該是殼**獲取關鍵api的**,非oep**

我們不知道這是個什麼殼,看起來esp定律也沒用,只能換一種方法了,用特徵定位:查殼時我們知道這是乙個vc6.0或者易語言程式,oep第乙個api呼叫是getversion,api下斷點,中斷兩次後,就能到達oep附近了,棧回溯找到oep位置。

如果直接dump檔案,修復匯入表會發現程式仍然不能正常執行,那麼它就不是乙個單純的壓縮殼,殼中加密技術一般有iat加密、混淆花指令、偷取oep、反除錯、反虛擬、**虛擬化。這個殼我分析後它是有iat加密的功能的,所以要先解密iat。

第一步:找到模組呼叫ff15型別的呼叫,內的位址就是iat所在位置,在iat下硬體寫入斷點,程式會在填充iat的時候斷下來。

程式第一次在這裡斷下,異或iat表的內容,這裡應該是iat加密相關,繼續執行

程式第二次斷下正是填充iat的地方,在這裡下斷點或者注釋,只要你能記住這個地方就行了。

第二步:接下來要f7單步跟蹤,走一遍iat加密的流程,找到三個關鍵**位置:

注意觀察暫存器視窗,出現api字串、loadlibrarygetprocaddress就要格外注意了

這裡iat加密的**比較短,也沒有什麼干擾,比較好分析,方法都是一樣的記住找三個關鍵點。此處nop掉加密**,再跟一遍,雖然異或的**nop掉了,但是填充的時候eax已經不是api位址了。分析了一下,也沒看懂在幹嘛

直接修改**,在獲取api後面就把位址填充進去,這總沒錯了吧,跟一遍

找到iat加密**,還原iat表,直接執行到oep處,此時就可以dump檔案了。然後修復,第一次修**現不能用,查了下iat表發現模組之間會夾雜者一些亂七八糟的值,我們把修復工具的size改大一些,修復就可以了。

修復成功後的效果圖:

Java入門之程式設計基礎(五)

方法 就是完成功能的 塊 1.有返回值的方法 1.定義格式 修飾符 返回值型別 方法名 引數型別 引數名1,引數型別 引數名2.2.格式解釋 修飾符 public static 返回值型別 用來限定返回值的型別 方法名 提供呼叫方法的方式 引數列表 用於接收呼叫方法時傳入的引數 方法體 完成功能 r...

JNI入門之C C 基礎五

聯合體 共用體 不同型別的變數共同占用一段記憶體 相互覆蓋 聯合變數任何時刻只有乙個成員存在,節省記憶體 聯合體變數的大小 最大的成員所佔的位元組數 union myvalue int x int y double z void main union myvalue d1 d1.x 90 d1.y ...

Shader之小白入門學習五

先實現乙個只有顏色屬性可調節的簡單材質效果,如下圖所示 模型可隨便找乙個,預設的幾何體也可以,在材質面板中只有乙個顏色屬性,當我們點開拾色器時,對應的模型也會自動發生變化。我們就用之前的myfirstshader來完善。在乙個shader中,可以有多個subshader以及乙個subshader中也...