題:
如何反向工程在Android APK中找到的.so文件?
Pervy Sage
2014-06-17 12:09:59 UTC
view on stackexchange narkive permalink

我知道如何使用APK-tool和dex2jar之類的工具對正常的Android APK進行反向工程,但是我不知道如何處理混淆。任何人都可以提供幫助或至少提供一些指示嗎?我知道這很大程度上構成了我自己學習,但是我真的不知道該看什麼或看什麼。一些示例將非常有幫助。謝謝!

編輯:

當我從APK中提取所有內容時,我得到了一些SMALI文件(我嘗試使用JD-GUI,但字符串包含隨機名稱。可能使用Proguard進行了混淆。),lib目錄中的一些資源文件和一個“ .so”文件。如何分析“ .so”文件。我知道SO文件是Linux世界中的一種DLL,但是可以用來分析SO文件的工具是什麼。視頻的任何鏈接都將非常有幫助。 :)

此外,如果APK中有JAR文件而不是SO文件,我該如何解決?

這是一個不好的問題,因為混淆的主題很大。嘗試縮小範圍。
我應該怎麼做才能縮小範圍?
嘗試使其成為“ googlaleble”問題。例如:當我打開PE時,我缺少導入表?怎麼會這樣?還是我注意到我的APK裝有dexprotector,什麼是最好的方法?
@Stolas-請參閱我的編輯。這會縮小範圍嗎?
完善!我已提名它重新開放。重新打開後,我會為您解答。
[Android忍者-反向工程師SO庫?](http://icompile.eladkarako.com/reverse-engineer-android-so-library/)☕
八 答案:
Guntram Blohm supports Monica
2014-06-18 20:43:46 UTC
view on stackexchange narkive permalink

.so文件是一個編譯的庫,大多數情況下是從C或C ++源代碼獲取的。 .so代表Shared Object,它與混淆無關,只意味著有人用C編寫了應用程序的某些部分。

在某些情況下,存在現有的C代碼,這很容易程序員可以建立一個JNI接口來從Java調用該庫;在其他情況下,程序員希望編譯的C具有比Java更快的速度。當然,如果我想隱藏應用程序的某些部分是如何工作的,可以用C編寫並將其編譯為.so,從而使反轉變得更加困難。

如果要反轉android。因此,這些是您可以選擇的選項:

  • 購買IDA pro的商業版本。演示版本將無法執行,因為它們無法反彙編ARM代碼。這很昂貴,但是到目前為止,它是與未知對象代碼一起使用的最佳工具。
  • 如果該應用程序包括針對不同硬件的.so版本,並且在x86上具有針對android的庫,則使用免費的IDA 5.1版本進行反彙編。碼。然後,使用該文本文件。也許還有用於Windows上運行的ARM目標的gcc工具鏈,但我從未嘗試過。
  • 您還可以將.so文件上傳到 http://onlinedisassembler.com/如果不想安裝gcc工具鏈,則要獲取反彙編文件。

請注意,在所有這些情況下,您都需要對ARM處理器體系結構有透徹的了解。 ,彙編語言,JNI約定和編譯器ABI來進行反彙編。如果您沒有經驗,請準備許多漫長的夜晚。

Android具有x86版本,因此我認為OP可以從x86映像中獲取相同的.so文件並進行反編譯
不幸的是,onlinedisassembler.com具有局限性。上載大小上限為256KB。
[Bokken](https://inguma.eu/projects/bokken)也支持ARM,對嗎?
〜“ **然後,請嘗試一下該文本文件。**”您的意思是?明智地檢查此文本文件的最佳方法是什麼。
實際上,IDA的演示版確實支持ARM(免費軟件不支持)。
`如果您沒有經驗,請準備許多漫長的夜晚。
Ida Pro具有一個反編譯器插件(Hex-Rays Decompiler),該插件試圖將彙編代碼轉換為C樣式的代碼。它不能完美運行,但是可以讓您全面了解大多數功能,而不必了解彙編語言/操作碼。
Cedric VB
2014-06-30 21:10:25 UTC
view on stackexchange narkive permalink

除了Guntram的建議外,請查看可重定目標的反編譯器aka retdec。它可以將二進製文件反編譯為Python或C代碼。至少對我來說,它比純彙編容易閱讀(並且對ARM二進製文件有效)。

它非常適合於勾勒出共享庫的粗略工作原理。

A可以使用某些IDA版本的插件,但主要限制是它不支持64位代碼。

這不是很好。 Hexrays反編譯器獲勝。
@Krypton為什麼會顯示“ **不是很好” **?
Hexrays反編譯器可與IDA Pro配合使用。 IDA是目前最好的反向工具。這個組合的意義不僅僅在於反編譯器。
Ole André Vadla Ravnås
2014-06-28 04:06:07 UTC
view on stackexchange narkive permalink

您還可以通過掛接API並觀察參數和返回值來嘗試動態方法。這將使您查看進入加密API的數據,這在處理網絡協議時可能會有很大幫助。查看 Frida工具工具包,以獲取開源的跨平台解決方案(Android,iOS,Windows,Mac和Linux)。 教程顯示瞭如何在幾分鐘內構建交互式檢測工具,該工具將代碼注入iOS上的“ Yo”應用中,並使用Google Maps繪製網絡連接。

Frida會反彙編.so文件?
Frida截取了對本機庫的調用,因此您可以查看其中的內容和結果。
Shailesh Mota
2017-07-20 20:00:14 UTC
view on stackexchange narkive permalink

使用android-ndk, https://developer.android.com/ndk/downloads/index.html

您可以使用ndk內的工具鏈來執行您想要的拆卸類型。例如如果我反編譯apk並從其中獲得一個.so庫,我將執行:

./ android-ndk-r15b / toolchains / arm-linux-androideabi-4.9 / prebuilt / darwin -x86_64 / bin / arm-linux-androideabi-objdump -T“ SAMPLE.so | less

以獲取 objdump

Adrian Paul
2018-01-11 13:23:07 UTC
view on stackexchange narkive permalink

您還可以嘗試使用Snowman工具: https://derevenets.com/

Snowman是C / C ++反編譯器的本機代碼

它支持在其網站上指定的ARM,x86和x86-64體系結構。

雪人可能存在內存洩漏。在反編譯一個小的.so文件時花費了6+ Gb RAM
同意。它確實使我的8 GB RAM的機器掛了。
Indeed! It looks that it works better with a small base code.
為什麼不給作者一個機會並通知他/她這些問題?軟件缺陷不是天生的,因此可以修復。但是用戶需要報告他們,這樣才能發生。
KYHSGeekCode
2018-08-09 20:29:38 UTC
view on stackexchange narkive permalink

您還可以直接在Android設備上直接對APK文件進行反向工程。

  1. Java部分: Show Java
  2. .so文件: Android反彙編程序
  3. ol>

    免責聲明:我是開發人員)

    版本1.4.2 發行版

    Android-Disassembler

    反彙編 ANY 文件,包括android共享庫(又名.so文件) )(NDK,JNI),Windows PE文件(EXE,DLL,SYS等),Linux可執行文件,目標文件,任何您想要的圖片,音頻等文件(在娛樂上)(完全是在Android上)。

    功能

  • 顯示elf文件的詳細信息。
  • 顯示符號表(函數或對象的,..
  • 反彙編代碼段。
  • 具有反彙編的各種導出選項。 (可重新加載的原始文件,可編譯的txt文件,分析文本文件,json和可重新加載的數據庫)
  • 支持項目。
  • 支持直接從文件瀏覽器啟動
  • 支持許多ABI(arm,x86,x64,MIPS,PowerPC等)
  • 跳轉到符號名或十六進制地址來尋址。
  • 語法著色。
  • 支持PE和其他bin格式。
  • 如果需要,可以對符號進行排序。
  • 無需按 Disassemble
  • 為PUSH / POP指令著色。
  • 更好地為ARM拱形指令著色。
  • 為跳轉指令添加了關注跳轉菜單。 (使用BackStack
  • 可以覆蓋自動解析設置

新增功能

  • 您可以復制
  • 現在可以解析PE標頭的 IAT,EAT
  • 已修復的錯誤。

有關程序集的材料

打開來源

此應用使用了- Capstone-存儲選擇器- Colorpickerview- Java-binutils- PECOFF4J

謝謝

https://reverseengineering.stackexchange.com/a/20124/23870

XRefs

https://reverseengineering.stackexchange.com/a/18203/23870

相關鏈接(RE線程)

為什麼我要在Android設備上執行此操作?
@Sam嗯,為什麼不呢?您甚至可以在android上開發應用程序! (我願意):)(一個可能的優點,它不需要將文件複製到PC)
Sam
2019-01-02 05:45:47 UTC
view on stackexchange narkive permalink

根據此博客文章,GikDbg看起來像是Ollydbg mod,用於調試本機Android庫。

不幸的是,GikDbg的網站已不存在。

梁赛飞
2019-04-10 12:57:42 UTC
view on stackexchange narkive permalink

您可以嘗試使用ghidra,Ghidra是由國家安全局研究局創建和維護的軟件逆向工程(SRE)框架。該框架包括一套功能齊全的高端軟件分析工具,使用戶能夠在各種平台(包括Windows,macOS和Linux)上分析編譯的代碼。功能包括反彙編,彙編,反編譯,製圖和腳本編寫,以及數百種其他功能。 Ghidra支持多種處理器指令集和可執行格式,並且可以在用戶交互和自動模式下運行。用戶還可以使用Java或Python開發自己的Ghidra插件組件和/或腳本。鏈接: https://github.com/NationalSecurityAgency/ghidra



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...