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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

so文件反编译_安卓攻防so模块自动化修复实战

發布時間:2025/4/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 so文件反编译_安卓攻防so模块自动化修复实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Android加固方案經過這么長時間的發展,從開始的整體dex加密壓縮方案逐步開始往native層發展,市面上知名的幾款商業級加固方案中很容易發現這種方案的身影。這樣看來,在今后相當長的一段時間內,Android逆向中不可避免的會頻繁接觸到與So加固的對抗了。

?工具的初衷

搜集常見So加固方案(主要是日常分析中遇到的)

自動化對抗加固方案,解放雙手

開源工具源碼

1.把切實可行的解決方案想法落地到代碼

2.方便需要的同學查看解決方案原理

3.希望有更多的人參與進來,慢慢打造一個好用上手的工具

目前狀態工具目前還處于娃娃階段,平時上班沒有太多時間來擼^..^,目前包含了如下的功能:

1.So文件信息讀取顯示

1.1 顯示Elf頭

1.2 顯示Program頭

1.3 顯示Section頭

2.So文件節表修復重建功能(適合面目全非型)

2.1 根據.dynamic 節重建其他節信息

工具簡介

  • 開源地址:https://http://github.com/freakishfox/xAnSo。
  • 目錄結構如下:

Core

  • 主要存放一些基礎組件類

fix

  • 主要存放一些修復方案邏輯
  • 持續增加...

util

  • 邏輯無關的工具類

viewer

  • 界面顯示相關邏輯

Windows

  • 工具在Windows平臺下編譯需要的工程配置及相關文件

工具編譯

  • 目前Windows平臺的編譯可以在Visual Studio2013環境下完成,Android目錄下的編譯配置文件還沒配置上去

實戰一波(阿里安全加固方案測試版)

環境準備

  • 要測試工具效果,我們自己寫一個很簡單的Android App, , 使用Android Studio創建一個工程,主要代碼如下:

開始分析

  • 把下載回來的加固包丟入 AndroidKiller (請自行更新包里的工具ApkTool到最新版本,省的再踩老坑反編譯報錯...)

  • 圖中我框出了經過加固之后的變化部分
  • MainActivity->OnCreate函數變成了Native, 里面原先的代碼看不到了
  • 增加了一個類fixHelper
  • 增加了幾個附帶的So文件
  • 為了更加直觀,我們把AndroidKiller反編譯出來的classes-dex2jar.jar 拖入jd-gui查看,代碼很直觀,如下:

  • 很自然,我們要跟著 fixHelper.fixfunc 進一步分析,繼續觀察代碼,發現悲劇了,進入native層了,直接看圖:

  • 逃不掉了,必須要看So的代碼了, 從這里的代碼我們知道,肯定有那么一個So庫,有那么一個導出函數fixfunc可以供Java層調用,看上面的這個代碼結構的架勢,估計是在運行時動態修復MainActivity.OnCreate函數的,
  • 帶著這樣的疑問,我們在這個fixHelper類中找到了一個static{}代碼塊中找到了經典的 System.load("libdemolish.so"),那清楚了,二話不說在反編譯后的目錄里面找到這個So文件,直接拖入IDA靜候佳音!

陷入杯具

  • IDA反編譯的結果是這樣的:

  • IDA分析完成之后,函數列表是空的, 導出函數也是空的,代碼區域啥的都是 1% ~~~~,顯然是這個So文件經過了處理,并成功干擾到了IDA的分析

開始思考

  • 內心的想法
    • 到這里,一開始是懵逼的,到底這個So文件被搞了什么鬼導致IDA跟著懵逼呢?但是我知道一個前提,如果我們自己編譯一個So文件,不經過處理,那IDA分析起來是比較溜的,于是我們這個時候考慮啟用 對比大法
  • 開始對比
    • 要對比,那我們就找一個沒有經過(加固)處理的So模塊來,我隨便找了一個模塊,為了描述方便,我稱為A模塊吧, 于是開始使用 readelf 這個工具分別查看模塊的狀態,得如下結果:

    • 這是節表顯示結果,通過對比,結果很直觀,被處理過的So模塊,節表大部分信息已亂,除了elf執行必須的.DYNAMIC節之外,于是我們首先懷疑可能就是這里的問題導致了IDA的紊亂,找到了一處懷疑點,那就開始干,把不一樣的變的一樣(西醫就是這么個思路~~), 那具體要怎么修復呢, 了解ELF格式的同學應該比較快速的知道,利用 .DYNAMIC信息來進行修復(修復原理可以參考:https://bbs.pediy.com/thread-192874.htm=>
      6
      [原創]ELF section修復的一些思考, 感謝 @ThomasKing),部分修復操作在 @ThomasKing的基礎上做了修改調整
  • 解決問題
    • 問題初步定位了大致方向, 原理也了解了, 于是落地到代碼, 啟動寫好的工具對節表信息進行修復:

  • 等待一會兒會修復完畢,于是我們得到修復后的文件:、

再次嘗試

  • 剛才跟節表磕了一會兒,現在再回過神來繼續想想 fixHelper.fixfunc 搞定了沒有,把我們修復之后的文件拖入IDA, 經過一小會兒的分析, 效果出來了, 基本有了我們希望的結果(直接有圖有真相):

就到這里了

  • 到這里之后,估計很多人都能繼續著手分析了, 也達到了本文的目的。最后提醒一點是,大家在自己動手修復節表這種東西的時候,不要忘記修復 符號表,對IDA來說還是比較重要的,不然分析出來的效果會降低,具體情況大家可以嘗試一遍,印象會更深刻。
  • 另外建議新手有空可以讀一下 apkTool 的代碼,確實沒幾行代碼,但是在熟悉這塊代碼之后,對后續的一些初級坑的幫助還是挺大的 ^..^

總結

以上是生活随笔為你收集整理的so文件反编译_安卓攻防so模块自动化修复实战的全部內容,希望文章能夠幫你解決所遇到的問題。

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