首先,对不起我的英语。这不是我的母语。这是我第一次做这样的事情,所以我在旅途中学习。
背景:我试图了解我从 Play 商店安装的游戏如何与服务器通信。更准确地说,如何在对服务器的每个 POST 请求上设置特定参数。
这个名为“secret”的 HTTP 参数不容易被逆向工程,因为它是其他参数的一种散列,用于检查请求的完整性。
我做了什么:
- 我从 .apk 中提取了 .dex 文件
- 我使用d2j-dex2jar来提取 .class 文件。
- 我用jd-gui工具分析源码
我发现了什么:这是生成“秘密”参数值的源代码:
.method public static native secretForString(Ljava/lang/String;)Ljava/lang/String;
.end method
据我所知,java 允许您使用 native 库,这要归功于native关键字。这些本机库是通过System.loadLibrary(...)
命令加载的。在 Main.java 文件中,我调用了这个命令System.loadLibrary("Main");
。如果我正确理解它是如何工作的,那么在我的安卓手机上安装了一个名为libMain.so的相应 .so 文件。
我扎根了我的 OnePlus6 并深入研究了寻找这个库的文件。
问题:我在手机上找不到这个库。/data/data// 中没有关联的 .so 文件
问题:
- 你能解释一下我做错了什么/我错过了。
- 假设我找到了库,我可以阅读其中的代码还是需要特定的工具?
- 如果问题 2 的答案是否定的,是否可以创建一个加载此特定库并使用它的小应用程序?
感谢您花时间帮助我:D