# Manual DeObfuscation

<details>

<summary><strong>从零开始学习AWS黑客技术，成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE（HackTricks AWS红队专家）</strong></a><strong>！</strong></summary>

支持HackTricks的其他方式：

* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**，请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们独家的[**NFTs**](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来分享您的黑客技巧。

</details>

### 手动**去混淆技术**

在**软件安全**领域中，使被混淆的代码变得可理解的过程，即**去混淆**，至关重要。本指南深入探讨了各种去混淆策略，重点放在静态分析技术和识别混淆模式上。此外，它介绍了一个实际应用的练习，并为那些有兴趣探索更高级主题的人提供了进一步的资源。

#### **静态去混淆策略**

在处理**被混淆的代码**时，可以采用几种策略，具体取决于混淆的性质：

* **DEX字节码（Java）**：一种有效的方法涉及识别应用程序的去混淆方法，然后在Java文件中复制这些方法。执行此文件以反转目标元素上的混淆。
* **Java和本地代码**：另一种方法是将去混淆算法转换为Python等脚本语言。该策略强调的是主要目标不是完全理解算法，而是有效地执行它。

#### **识别混淆**

识别被混淆的代码是去混淆过程中的第一步。关键指标包括：

* 在Java和Android中**字符串的缺失或混淆**，可能暗示字符串混淆。
* 在assets目录中**二进制文件的存在**或对`DexClassLoader`的调用，暗示代码解压缩和动态加载。
* 使用**本地库以及无法识别的JNI函数**，表明可能对本地方法进行了混淆。

### **去混淆中的动态分析**

通过在受控环境中执行代码，动态分析**允许观察被混淆代码的实时行为**。这种方法特别适用于揭示旨在隐藏代码真实意图的复杂混淆模式的内部工作方式。

#### **动态分析的应用**

* **运行时解密**：许多混淆技术涉及加密字符串或代码段，仅在运行时解密。通过动态分析，可以在解密时捕获这些加密元素，揭示它们的真实形式。
* **识别混淆技术**：通过监视应用程序的行为，动态分析可以帮助识别正在使用的特定混淆技术，如代码虚拟化、打包工具或动态代码生成。
* **揭示隐藏功能**：被混淆的代码可能包含通过静态分析无法明显看出的隐藏功能。动态分析允许观察所有代码路径，包括有条件执行的路径，以揭示这些隐藏功能。

### 参考资料和进一步阅读

* <https://maddiestone.github.io/AndroidAppRE/obfuscation.html>
* BlackHat USA 2018: “解包打包解包器：逆向工程Android反分析库” \[[视频](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* 本讲座涵盖了我见过的Android应用程序使用的最复杂的反分析本地库之一的逆向工程，主要涵盖了本地代码中的混淆技术。
* REcon 2019: “通往有效载荷的路径：Android版” \[[视频](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* 本讲座讨论了一系列混淆技术，仅涉及Java代码，一个Android僵尸网络正在使用这些技术来隐藏其行为。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hacktricks.xsx.tw/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
