寻求专业人士帮助。
逆向安卓so文件中的字符串混淆解密,求解密方法或思路。
不知这个实例的思路是否能帮助到你【Android逆向之旅---破解某应用加密算法(动态调试so和frida hook so代码)】,链接:https://blog.csdn.net/m0_46204016/article/details/105614721
【这篇实例,主要是以实际操作整体上看,完整的一个流程步骤】
而这篇【android逆向奇技淫巧十:OLLVM原理、常见破解思路和hook代码】,重点看下原理和破解思路,讲解详细,分析到位,链接:https://www.cnblogs.com/theseventhson/p/14861940.html
要逆向解密 Android 应用程序中的字符串混淆需要执行以下步骤:
1、使用反汇编工具(例如 apktool 或 dex2jar)解包应用程序并反汇编其中的字节码。
2、寻找应用程序中解密字符串的代码。这通常是一个调用库函数的方法,该函数从混淆的字符串中解密原始字符串。
3、将解密函数的代码复制到您的反编译环境中,并将其编译为可执行代码。
4、使用该函数解密所有混淆的字符串。
由于字符串混淆的目的是使应用程序更难被静态分析,因此这种方法并不总是可行的。可能需要花费更多时间和精力来确定解密函数的确切位置和确定解密过程。
1、使用IDA反编译工具对so文件进行反编译,找到混淆字符串,并分析混淆算法;
2、使用gdb调试工具对so文件进行调试,跟踪混淆函数,找到混淆算法;
3、使用JEB反编译工具对so文件进行反编译,找到混淆函数,分析混淆算法;
4、使用Frida工具对so文件进行动态调试,跟踪混淆函数,找到混淆算法;
5、使用apktool工具对so文件进行反编译,找到混淆函数,分析混淆算法;
6、通过查看so文件的汇编代码,找到混淆函数,分析混淆算法;
一、解密方法
1.使用IDA Pro或者JEB进行逆向分析,找到加密函数并打上断点,调用加密函数时观察输入输出,从而得出加密方式。
2.使用OllyDbg或者x64dbg进行逆向分析,找到加密函数并打上断点,调用加密函数时观察寄存器的变化情况,从而得出加密方式。
3.使用Frida或者Xposed在程序运行过程中注入代码,调用加密函数并观察参数的变化情况,从而得出加密方式。
二、思路
1.分析字符串的加密方式,是否是通过某种算法加密的,如果是,则可以通过逆向算法来解密。
2.如果字符串是通过打乱字符顺序加密的,则可以通过在字符串中找到一些关键词或者常用语来确定字符串的加密方式。
3.如果字符串是通过加密表加密的,则可以通过找到加密表并构建解密表来解密。
4.如果字符串是通过混淆函数加密的,则可以通过找到混淆函数并求出反函数来解密。
5.如果字符串是通过多层加密加密的,则可以通过分析加密层数并依次解密
逆向这个有的时候是违法的
最主要的找到其加密算法和密钥,其他一切是次要,so库加密算法,一般就那常见的几种AES、DES等,获取所使用的算法很简单,一般通过简单的gdb调试工具,搜索关键字符,就可以得知,但是最难的是,知道key,这个比较难,暂时无解决方案