<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Androidmanifest文件加固和對抗

    VSole2024-01-22 10:02:16

    前言


    惡意軟件為了不讓我們很容易反編譯一個apk,會對androidmanifest文件進行魔改加固,本文探索androidmanifest加固的常見手法以及對抗方法。這里提供一個惡意樣本的androidmanifest.xml文件,我們學完之后可以動手實踐。


    1、Androidmanifest文件組成


    這里貼一張經典圖,主要描述了androidmanifest的組成


    ?


    androidmanifest文件頭部僅僅占了8個字節,緊跟其后的是StringPoolType字符串常量池


    (為了方便我們觀察分析,可以先安裝一下010editor的模板,詳細見2、010editor模板)


    Magic Number


    這個值作為頭部,是經常會被魔改的,需要重點關注


    ?

    StylesStart


    該值一般為0,也是經常會發現魔改



    StringPool



    ?尋找一個字符串,如何計算?


    1、獲得字符串存放開放位置:0xac(172),此時的0xac是不帶開頭的8個字節


    所以需要我們加上8,最終字符串在文件中的開始位置是:0xb4


    2、獲取第一個字符串的偏移,可以看到,偏移為0


    ?

    3、計算字符串最終存儲的地方: 0xb4 = 0xb4 + 0


    讀取字符串,以字節00結束



    ?讀取到的字符為:theme


    總結:


    stringpool是緊跟在文件頭后面的一塊區域,用于存儲文件所有用到的字符串


    這個地方呢,也是經常發生魔改加固的,比如:將StringCount修改為0xFFFFFF無窮大


    在經過我們的手動計算和分析后,我們對該區域有了更深的了解。


    2、010editor模板


    使用010editor工具打開,安裝模板庫


    ?

    搜索:androidmanifest.bt



    ?安裝完成且運行之后:


    ?

    會發現完整的結構,幫助我們分析


    3、使用AXMLPrinter2進行的排錯和修復


    用法十分簡單:


    java -jar AXMLPrinter2.jar AndroidManifest_origin.xml
    


    會有一系列的報錯,但是不要慌張,根據這些報錯來對原androidmanifest.xml進行修復



    ?意思是:出乎意料的0x80003(正常讀取的數據),此時卻讀取到:0x80000


    按照小端序,正常的數據應該是: 03 00 08


    使用 010editor 打開


    ?

    將其修復



    ?保存,再次嘗試運行AXMLPrinter2



    ?好家伙還有錯誤,這個-71304363,不方便我們分析,將其轉換為python的hex數據


    NegativeArraySizeException 表示在創建數組的時候,數組的大小出現了負數。


    androidmanifest加固后文件與正常的androidmanifest文件對比之后就可以發現魔改的地方。



    ?將其修改回去



    運行仍然報錯,是個新錯誤:



    ?再次去分析:


    ?

    stringoffsets如此離譜,并且數組的大小變為了0xff


    ?


    根據報錯的信息,嘗試把FF修改為24


    ?


    ?再次運行



    ?成功拿到反編譯后的androidmanifest.xml文件


    總結:


    這個例子有三個魔改點經常出現在androidmanifest.xml加固


    惡意軟件通過修改這些魔改點來對抗反編譯

    010editor
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    巧解一道CTF Android題
    2022-08-10 16:15:40
    無須還原代碼,窮舉爆破。我們打開jeb工具,定位到當前activity。我們看一下saveSN方法,可以看到這是一個native方法。我們解包一下apk,獲取到so文件。下面進入ida分析。導出函數并沒有相關java的native方法,說明是動態注冊。我們看下JNI_ONLOAD函數:jint JNI_OnLoad{ if ( !
    請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與文章作者和本公眾號無關。
    紅隊人員拿到一臺主機權限后首先會考慮將該機器作為一個持久化的據點,種植一個具備持久化的后門,就需要用到權限維持
    Android 應用gl,使用了加固i,老版本的應用gl是js源碼,新版本更新后,剛開始以為是加密了源碼,分析后才知道是使用了Hermes優化引擎。Hermes優化的優化效果如下:優化前:優化后:二、前期準備2.1 繞過root檢測應用gl使用了加固i,在被root 的手機上運行,閃退。繞過方法也很簡單,在magisk的設置中,開啟遵守排除列表,然后在配置排除列表中選擇應用gl。
    一款APP外殼原理分析
    2023-07-26 10:09:20
    跑工具重新生成了一份section后,ida已經可以正常的解析so了。暫時不去關心解密算法的實現,等.init方法運行結束后,直接dump內存,可以看到數據已經解密完成。混淆的簡單處理ida識別寄存器跳轉失敗。解決辦法就是幫助ida正確識別switch-case,具體可以參考這篇文章正確修復后,ida也就能正常反編譯了。平坦化的處理代碼的正常流程被switch-case打亂了。對于跳回def塊的case塊,則會通過條件執行來決定下一個要執行的case塊。
    惡意軟件為了不讓我們很容易反編譯一個apk,會對androidmanifest文件進行魔改加固,本文探索androidmanifest加固的常見手法以及對抗方法。這里提供一個惡意樣本的androidmanifest.xml文件,我們學完之后可以動手實踐。
    ?微信小程序逆向分析
    2023-07-03 09:00:42
    WeChatAppEx.exe 版本:2.0.6609.4以融智云考學生端為例。網上已經有關于微信小程序解密的非常優秀的文章,本著學習的目的便不參考相關內容。筆者水平實在有限,如發現紕漏,還請讀者不吝賜教。拓展的,我們分別觀察RSI與RDI指向的內存區域。事實上,這一部分解密過程與微信圖片解密相同。目的是用int8類型的值a3填滿rbp至8個字節,進行8個字節分組異或。至此,尾部部分解密告一段落。
    ..aaaagf,一共有260個寬字符。漏洞跟蹤將構造好的U盤插入Windows 2000系統,在ollydbg中開啟cmd.exe進程,如下圖:在命令行窗口執行dir e:,進程出現異常。這里我用了污點數據追蹤的方法來找程序的crash point,也就是說在堆棧區找到我們構造的污點數據aaaaaaaa…
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类