• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 運行時壓縮

    標簽: 逆向  

    數據壓縮

    1. 經過壓縮的文件若能100%恢復,則稱該壓縮為"無損壓縮",若不能恢復原狀,則稱該壓縮為有損壓縮。
    2. 無損壓縮用來縮減文件的大小,壓縮后的文件更易保管、移動,使用經過壓縮的文件之前,需要先對文件解壓縮。
    3. 有損壓縮允許壓縮文件時損失一定信息,以此換取高壓縮率,壓縮多媒體文件時,大部分都是用這種有損壓縮方式,從壓縮特性來看,有損壓縮的數據壓縮后不能完全恢復原始數據,人類的肉眼與聽覺幾乎無法覺察到這些多媒體文件在壓縮時中損失的數據。

    運行時壓縮器

    1. 運行時壓縮器是針對可執行文件而言的,可執行文件內部還有解壓縮代碼,文件在運行瞬間于內存中解壓縮后執行。
    2. 運行時壓縮文件也是PE文件,內部含有原PE文件于解碼程序,在程序的EP代碼中執行解碼程序,同時在內存中解壓縮后執行。
    3. 把普通PE文件創建成運行時壓縮文件的使用程序稱為壓縮器,經反逆向技術特別處理的壓縮器稱為保護器。
    壓縮器
    1. 使用目的
    • 縮減PE文件的大小
    • 隱藏PE文件內部代碼于資源
    1. 壓縮器的種類
    • PE壓縮器大致可分為兩類:一類是單純用于壓縮普通文件的壓縮器;另一類是對源文件進行較大變性、嚴重破壞PE頭、意圖稍顯不純的壓縮器。
    保護器
    1. PE保護器是一類保護PE文件免受代碼逆向分析的使用程序,它們不想普通的壓縮器一樣僅對PE文件進行運行時壓縮,而應用了多種防止代碼逆向分析技術(反調試、反模擬、代碼混亂、多態代碼、垃圾代碼、調試器監控等。),這類保護器使壓縮后的PE文件尺寸反而比源文件要大一些,調試起來非常難。
    2. 使用目的
    • 防止**
    • 保護代碼與資源
    1. 使用現狀
    • 這類保護器大量應用于對**很敏感的安全程序,比如安裝在線游戲時會自動安裝安全保護程序,游戲安全保護程序就是為了防止游戲**工具運行的。
    • 常見的惡意代碼中也大量使用保護器來防止殺毒軟件的檢測。

    運行時壓縮測試

    1. 以notepad.exe為例進行運行時壓縮測試。
    C:\Users\12586\Downloads\example\02\14\bin>upx -o notepad_upx.exe notepad.exe
                           Ultimate Packer for eXecutables
                              Copyright (C) 1996 - 2008
    UPX 3.03w       Markus Oberhumer, Laszlo Molnar & John Reiser   Apr 27th 2008
    
            File size         Ratio      Format      Name
       --------------------   ------   -----------   -----------
         67584 ->     48128   71.21%    win32/pe     notepad_upx.exe                                                                                                                                                                                Packed 1 file.
    
    • 可以看到壓縮后的文件尺寸明顯減小了(67584 -> 48128),若使用ZIP壓縮,則文件大小縮減為35231,也就是說,運行時的壓縮率要比普通的ZIP壓縮低一些,這是由于其壓縮后得到的是PE文件,需要添加PE頭,并且還要放入解壓縮代碼。
    • Compare notepad.exe and notepad_upx.exe
      在這里插入圖片描述
    • PE頭大小一樣(0~400h)。
    • 節區名稱改變(".text" -> “UPX0”, “.data” -> “UPX1”)
    • 第一個節區的RawDataSize = 0
    • EP位于第二個節區,原來notepad.exe的EP在第一個節區。
    • 資源節區大小幾乎沒有變化。
      在這里插入圖片描述
    • 需要注意的是第一個節區的VirtualSize(在內存中的大小)的值被設置為1000,而SizeOfRawData的值為0(在磁盤中的大小),這就說明,解壓縮代碼與壓縮的源代碼都在第二個節區,文件運行時首先執行解壓縮代碼,把處于解壓縮狀態的源代碼解壓到第一個節區,解壓過程結束后即運行源文件的EP代碼。
    版權聲明:本文為qq_39249347原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_39249347/article/details/107958031

    智能推薦

    運行時值注入

    直接注入 Bean直接注入示例: XML直接注入示例: 注入外部的值 創建app.properties文件 重Environment中獲取外部注入值 Environment中方法: String getProperty(String key):返回一個String類型值 String getProperty(String key, String defaultValue):返回一個String類型...

    Android 運行時權限

    半年前換過手機之后,就發現許多軟件在安裝之后已經授權過的內容,實際使用的過程中,會再次向我詢問權限。這幾天在開發的過程中,也遇到了明明在AndroidManifest.xml文件中申請過權限了,可是程序依舊拋錯,沒有權限的問題。調查以后發現,Android在6.0系統中引用了運行時權限這個功能,從來更好的保護用戶的安全和隱私。 Android將權限歸為兩類,一類是普通權限,一類是特殊權限。對于不會...

    淺談Runtime運行時

    runtime runtime又叫運行時,是一套底層的c語言api,其為iOS內部核心之一。OC是動態運行時語言,它會將一些工作放在代碼運行時去處理,而非編譯時,比如動態的遍歷屬性和方法,動態的添加屬性和方法,動態的修改屬性和方法等。 了解runtime,首先要先了解它的核心--消息傳遞。 消息傳遞 消息直到運行時才會與方法實踐綁定起來。 一個實例對象調用實例方法,像這樣[obj doSometh...

    Android運行時權限

    Android運行時權限 簡介:Android 6.0 以后,對于一些用戶隱私權限總會在第一次提示用戶是否授予權限。 優點: 更好的保護了用戶的隱私。 給了程序向用戶說明權限的作用。 可以防止一些惡意程序盜取用戶后者手機信息,增強了Android系統的安全性。 Android 6.0 將權限分為兩類: 普通權限:不需要單獨申請,直接在Manifest里注冊即可。 危險權限&危險權限組:危險...

    flink運行時架構

    flink作為計算引擎,在不同的環境中有著不一樣的運行架構,下面我們簡單說兩種架構,standalone模式和yarn 1.standalone模式 作業管理器(簡稱JM),控制一個流式應用程序的主進程,是一個jvm進程,也就是說,每一個流式處理都會有一個對應的JM 這個流程的感覺就像是一個三口之家,孩子是客戶端,母親是JM,父親是TM。當孩子需要一個東西,他會首先找到他媽媽說,需要這個東西,當他...

    猜你喜歡

    運行時值注入

    注入外部的值 在Spring中,處理外部值的最簡單方式就是聲明屬性源并通過Spring的Environment來檢索屬性。 使用@PropertySource注解和Environment 程序清單: 測試代碼: 工程結構 學習Spring的Environment getProperty()方法有四個重載的變種形式: 前兩種形式的getProperty()方法都會返回String類型的值。 第二種在...

    Java 運行時異常

    Java 運行時異常 Java 的異常分為 檢查型異常(CheckedException) 以及 運行時異常(RuntimeException)。 其中檢查型異常必須被顯式的處理,如果沒有對其進行處理,將無法通過編譯。   目錄 Java 運行時異常 RuntimeException 源碼 繼承類圖 子類 常見的幾個運行時異常 下面我們先看一下 RuntimeException 的源碼 ...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡