《xp過堆棧檢測app(XP過檢測)》是一種軟件應用程序,旨在幫助開發人員檢測和解決在應用程序中可能出現的堆棧溢出錯誤。堆棧溢出是一種常見的編程錯誤,當一個函數遞歸調用自己或者太多函數被嵌套調用時,會導致堆棧溢出。這會導致程序崩潰或者產生不確定的行為,從而導致數據丟失或系統不穩定。
越來越多的app對xposed進行了檢測
通過分析了其中部分對xposed檢查的代碼,希望通過xposed的方式阻止xposed檢測達到通用的目的。
一般檢查手段有很多,樓主也沒分析完,這里列舉了幾個和處理方式。
1、通過 ClassLoader 的 loadClass 加載XposedHelper 來修改一些局部變量值,阻止hook.
處理方式,通過Hook 類加載修改 加載的類名
2、通過 代碼拋出一個異常,在堆棧中,查找Xposed相關的內容,進行判定處理方式,通過Hook堆棧獲取類名替換的方式進行阻止
3、通過讀取 shell 命令 /proc/pid(應用進程id)/maps 可以拿到當前上下文的so和jar列表,查找Xposed相關
處理方式,樓主看到大部分多試通過使用 BufferedReader進行讀取命令的內容,過濾掉 XposedBridge.jar就好。
繞過簽名驗證
隱藏你指定的應用
隱藏模擬位置
隱藏xposed框架
隱藏root
過濾Error級別的日志,得到以下信息:
導出/data/tombstones/tombstone_18到電腦,查看內存(方法棧)(也可以用MT管理器直接在模擬器或者手機上查看):
首先通過java.lang.Thread.currentThread獲得當前線程對象,然后調用getStackTrace獲得StackTraceElement數組,遍歷該數組,調用getClassName,再判斷是否包含xposed
定位xposed檢測
通過Xposed框架進行hook這個app中的Thread.getStackTrace,打印調用棧(函數返回值):
(如果需要Hook這個app的StackTraceElement.getClassName,打印返回值即可)
打印的日志如下:
通過日志信息,可以看到調用者是java.lang.Runtime.nativeLoad,即so加載時調用(在Native層通過JNI方式進行調用getStackTrace)
分析dex文件
通過使用JEB反編譯(也可以用androidkiller、jadx等工具反編譯dex文件)classes.dex,通過字符串 的關鍵信息可以定位到com.secneo.apkwrapper.AW.attachBaseContext:
可以看到加載的是libDexHelper.so(舊版本是在加載,現在改到attachBaseContext了)
由so的加載流程可知,在so中的檢測函數的調用要么是在JNI_OnLoad,要么是在.init或.init_array區段。
通過使用IDA動態調試APP,發現該加固是在JNI_OnLoad中調用檢測函數(這里怎么用ida動態調試apk就不細分析)。
由于最終還是要調用Java層的getClassName方法,考慮到通用性,可以編寫Xposed模塊,繞過堆棧檢測xposed框架
檢測的繞過
XposedHookStackTraceElement.getClassName方法,判斷是否包含xposed,如果包含則替換返回值為android.os.Handler
注意:需要在DexHelper加載前Hook,因為該加固是在JNI_OnLoad中調用檢測函數。
上面代碼是簡單的xposed的hook代碼功能。
1、為部分插件提供啟用/禁用免重啟支持
2、為部分插件提供插件教程
3、為插件增加評論評分功能
4、修復部分Bug,提升體驗
5、新增設置功能在管理頁面,支持下載、安裝等相關設置
6、新增插件忽略/取消忽略更新功能
7、新增低電量時框架安裝保護機制
8、新增用戶反饋功能
XP過堆棧檢測app使用一種靜態代碼分析技術,掃描整個代碼庫以尋找潛在的堆棧溢出錯誤。它會檢查函數調用鏈的深度,以及遞歸調用的情況。如果檢測到潛在的堆棧溢出風險,它會發出警告,并提供可能的修改建議。
手機軟件,是指能在手機上方便用戶的一系列軟件,具備各種各樣的功能,滿足用戶的各種需求,包括各種保護手
進入專區>
熱門評論
最新評論