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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

脱壳

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 脱壳 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

脫殼

我們知道壓縮殼實現原理了,所以大概知道怎么拖了,只要我們找到解壓后的代碼入口點,在把他dump下來基本上就成功一半了,因為dump下來的IAT此時存放的是函數地址,而不是函數名的RVA,而且你也不知道對方有沒有抹掉導入表,所以需要修復導入表

脫殼步驟大致如下

  • 查找OEP OEP的識別:經驗、案例收集
    1.1 VC編譯程序的OEP:API斷點QueryPerformanceCounter,棧回溯往上找
    1.2 VS2003-VS2015編譯程序的OEP:call+jmp 通用方法: ESP定律
    ESP定律 :偽入口點找到程序返回的位置,也就是自己寫壓縮殼的時候,需要保存寄存器環境,等回到入口點執行時就要pop寄存器 這時候在push寄存器下一個硬件訪問斷點就可以找到了
    1.3 API:收集不同編譯器編譯后的真實入口點,找到必來的API,然后下API斷點往上查找
    單步跟蹤:單步跟蹤(步過循環,只向下跳轉),遇到一個跨節的大JMP一般就是真正的OEP

  • dmp文件
    注意:這里一定要在入口點再dup文件,因為有些全局變量一開始是未初始化狀態,如果程序已經正在運行,那么這時候dmp全局變量的值可能是錯的

  • 3.修復PE:修復對應導入表

    脫殼案例

    用exeinfope.exe查看一下是什么殼,發現是upx

    用x32db加載程序

    看到pushad,可以用ESP定律查看試一下,入棧后下個硬件訪問斷點,f9運行
    看到此時已經,pop了,接下來可以判斷應該是進入入口點了,繼續F8 jmp過去,如下圖,入口點位置如下

    此時dump下來,運行exe失敗,這個時候就要自己查看一下原因了,把dump下來的加載進x32dbg查看一下, 如下圖

    看到這個很像IAT的位置中的地址無效,查看一下原PE這個地址是什么,如下圖


    發現運行完這個函數之后ret就是api函數入口地址,這就相當于IAT填的是混淆代碼,反正最終是會運行到api入口地址去的,所以多運行api試一下,找找規律,把IAT的api入口地址填進行,我這個規律就是ret以后就是api入口地址,用python寫一個腳本去修復IAT,下載python2.7版本設置環境變量,然后把pythonSDk放到x32dbg插件的目錄下,重新啟動x32dbg
    python腳代碼如下

    #coding:utf-8 import x64dbgpy.pluginsdk._scriptapi.debug from x64dbgpy.pluginsdk._scriptapi import * SetHardwareBreakpoint(0x0047148b) Run()dwAddr = 0x00475000 dwCountOfApis = 0x48for i in range(0, dwCountOfApis):# 獲取IAT表項dwIATAddr = dwAddr + i*4# 讀取堆地址dwHeapAddr = ReadDword(dwIATAddr)# 判斷是否是0if(dwHeapAddr == 0):continue# 單步執行代碼到retSetEIP(dwHeapAddr)while True:StepIn()byte = ReadByte(GetEIP())if(byte == 0xC3):StepIn()break#eip為真正的API的地址,保存到IAT表WriteDword(dwIATAddr, GetEIP())

    然后執行代碼,此時IAT填的都是真正的地址,這時候用工具ImportREC把導入表(IAT)給保存下來,記得工具要管理員權限運行,不然會找不到PE文件,填好OEP和IAT的首地址和大小,獲取一下看看是否有效,有效的話直接點擊成load tree,因為有些是轉發函數(也就是函數實現在另一個dll里面),所以會無效,這個也必須修復一下,填真實的dll和函數名就修復了,如下圖

    最后把dump下來的文件用ImportREC修復導入表,點擊加載load tree----勾選上add new section----點擊fix dump,此時會生成一個新的修復導入表的新PE 如下圖

    總結

    以上是生活随笔為你收集整理的脱壳的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。