如何从 android 模拟器对 kik 的服务器 API 进行逆向工程?

Posted

技术标签:

【中文标题】如何从 android 模拟器对 kik 的服务器 API 进行逆向工程?【英文标题】:How do I reverse engineer kik's server API from an android emulator? 【发布时间】:2017-06-24 10:08:58 【问题描述】:

我在kik messenger 有一个群聊,已经有超过 50 个成员。我需要自动化一些事情,比如基于参与度的声誉积分,还需要踢掉那些在 XXX 天内不发布任何内容的不活跃成员。我查看了API reference,似乎机器人可以分组交互的唯一方法是使用@mentions。这意味着我们无法将它们添加到群组中,它们也无法监控群组对话。我也遇到过this,但它似乎没有帮助。

当前的 kik bot API 提供的权限非常有限,并且不允许监视组消息,因此我一直在考虑 reverse engineering the server API 并创建一个充当机器人并与此 API 交互的普通帐户。我已经设法通过fiddler 重新路由流量,但我不确定从那里去哪里。

所以问题是:逆向工程在 android 模拟器上运行的应用程序的 API 的工作流程是什么

提前致谢

【问题讨论】:

你试过反编译应用程序吗? Android 应用程序主要是 Java,因此任何 Java 反编译器都应该可以工作。如果应用程序被混淆,您将不得不采取一些额外的步骤来查看源代码。如果没有,请在跟踪流程时查看通过调试器发出的请求。 谢谢!我也会尝试一下@MiinimalLogic 【参考方案1】:

这是检查网络流量以及如何调试与 API 交互的一般说明。仅将它们用于您被允许使用的设备/API。请注意可能的法律影响并事先寻求法律建议。例如,在您所在的国家/地区对某些东西进行逆向工程可能是非法的。

准备工作:

    使用Fiddler、mitmproxy 等工具在计算机上设置代理。 配置您的代理以拦截和解密 SSL 连接。在此过程中,您必须生成 SSL 根证书(instructions for Fiddler 和 instructions for mitmproxy)并将其安装在您的手机/模拟器上,以使其接受代理生成的任何证书。 在手机的网络设置中配置代理。

如果应用/设备不支持代理,请在您的计算机上启动一个 ad-hoc WiFi 网络,将设备连接到它并使用Wireshark (instructions how to decrypt SSL) 捕获整个流量。

您似乎已经这样做了。现在是时候在手机上执行您喜欢检查/拦截的任何操作并观察/记录它们触发的请求了。这可能如下所示:

    发送消息。 识别触发的请求并将它们与其他应用程序引起的噪音区分开来,例如通过查看请求 URL 或目标 IP。 保存触发的请求以供将来参考,并查看可能感兴趣的详细信息,例如用户 ID、会话令牌、URL 和请求参数。如果您不确定哪些是固定的,哪些是可变的,请多次重复该操作(即发送一条消息)并相互比较请求。

如果您认为您找到了您要查找的内容,请尝试使用 curl 之类的工具重新创建会话,并检查结果是否符合您的预期。如果没有,请继续收集数据并重试。编写一些自动化测试,以便将来能够验证行为。

【讨论】:

谢谢!您是否有任何关于在数据包级别监控流量并以 cURL 或 puthon 之类的方式复制请求的教程?我不确定这是否存在,但对于对网络和数据包不太熟悉的初学者来说是这样的.. 如果您不熟悉较低的网络层,我建议您坚持使用 Fiddler/mitmproxy,因为它们只会向您显示 HTTP。关于 curl,curl.haxx.se/docs/httpscripting.html 很好地概述了如何创建各种 HTTP 请求。 httpbin.org 非常适合测试。

以上是关于如何从 android 模拟器对 kik 的服务器 API 进行逆向工程?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 android 手机中提取联系人并将其存储/导入到模拟器中的应用程序中?

[进位制] aw3727. 乘方相加(进位制+模拟+aw周赛005_2)

如何使用ADB进行调试

将kik bot部署到heroku不起作用

如何从 android 模拟器中删除示例应用程序?

如何从工具窗口android studio中删除模拟器