2024-02-09 01:27:24 +00:00
|
|
|
|
# 反向工程本地库
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-12-24 18:22:05 +00:00
|
|
|
|
<details>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
支持HackTricks的其他方式:
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
|
|
|
|
* 获取[**官方PEASS&HackTricks周边产品**](https://peass.creator-spring.com)
|
|
|
|
|
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
|
|
|
|
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
|
|
|
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
</details>
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
**有关更多信息,请查看:[https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)**
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
Android应用程序可以使用本地库,通常用C或C++编写,用于性能关键任务。恶意软件创建者也使用这些库,因为它们比DEX字节码更难逆向工程。本节强调针对Android定制的反向工程技能,而不是教授汇编语言。提供了ARM和x86版本的库以确保兼容性。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
### 关键点:
|
|
|
|
|
- **Android应用程序中的本地库:**
|
|
|
|
|
- 用于性能密集型任务。
|
|
|
|
|
- 用C或C++编写,使逆向工程具有挑战性。
|
|
|
|
|
- 以`.so`(共享对象)格式存在,类似于Linux二进制文件。
|
|
|
|
|
- 恶意软件创建者更喜欢本地代码以增加分析难度。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
- **Java本机接口(JNI)和Android NDK:**
|
|
|
|
|
- JNI允许在本地代码中实现Java方法。
|
|
|
|
|
- NDK是用于编写本地代码的Android特定工具集。
|
|
|
|
|
- JNI和NDK将Java(或Kotlin)代码与本地库连接起来。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
- **库加载和执行:**
|
|
|
|
|
- 使用`System.loadLibrary`或`System.load`将库加载到内存中。
|
|
|
|
|
- 在加载库时执行JNI_OnLoad。
|
|
|
|
|
- Java声明的本机方法链接到本机函数,实现执行。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
- **将Java方法链接到本机函数:**
|
|
|
|
|
- **动态链接:** 本地库中的函数名称与特定模式匹配,从而实现自动链接。
|
|
|
|
|
- **静态链接:** 使用`RegisterNatives`进行链接,提供函数命名和结构的灵活性。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
- **反向工程工具和技术:**
|
|
|
|
|
- 工具如Ghidra和IDA Pro有助于分析本地库。
|
|
|
|
|
- `JNIEnv`对于理解JNI函数和交互至关重要。
|
|
|
|
|
- 提供练习以实践加载库、链接方法和识别本机函数。
|
2020-07-15 15:43:14 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
### 资源:
|
|
|
|
|
- **学习ARM汇编:**
|
|
|
|
|
- 建议深入了解底层架构。
|
|
|
|
|
- 推荐来自Azeria Labs的[ARM汇编基础知识](https://azeria-labs.com/writing-arm-assembly-part-1/)。
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
- **JNI和NDK文档:**
|
|
|
|
|
- [Oracle的JNI规范](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
|
|
|
|
|
- [Android的JNI技巧](https://developer.android.com/training/articles/perf-jni)
|
|
|
|
|
- [开始使用NDK](https://developer.android.com/ndk/guides/)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
- **调试本地库:**
|
|
|
|
|
- [使用JEB反编译器调试Android本地库](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-12-24 18:22:05 +00:00
|
|
|
|
<details>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
|
|
|
|
|
|
|
|
|
支持HackTricks的其他方式:
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2024-02-09 01:27:24 +00:00
|
|
|
|
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
|
|
|
|
* 获取[**官方PEASS&HackTricks周边产品**](https://peass.creator-spring.com)
|
|
|
|
|
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
|
|
|
|
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
|
|
|
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
</details>
|