在 SSL 加密之前,我将如何获取应用程序的 XMPP 请求?

逆向工程 函数挂钩
2021-07-07 17:08:22

免责声明:我是新的,以逆向工程,虽然它深深吸引了我。因此,如果我在下面说任何可笑的地方,我先道歉,希望你能帮我找到方法!

上下文:我有一个应用程序,它似乎是用 Adob​​e AIR 编码并在我的 x64 Windows 7 上运行的。这个应用程序做了很多事情,但我感兴趣的是:它通过端口 5223,通过SSLXMPP服务器通信我的目标是能够SSL 加密之前读取客户端发送到服务器的 XML 请求(因此在请求创建之后,但在加密之前)。

不成功的尝试:我尝试设置MitM,但应用程序不会接受我定制的证书,因为它与真实的服务器证书不同。我也尝试使用Echo Mirage,但没有成功。


我已经阅读了一些关于hooking 的内容,并认为它适合我的问题。我在想:如果我能让应用程序在 SSL 加密之前打印 XMPP 请求,那么工作就完成了。为此,使用EasyHook实现 C# 钩子对我来说似乎是个好主意。

我在很大程度上是错误的吗?如果没有,我将如何让我的钩子函数打印请求,以及我应该在哪个函数调用之前放置它?
我对您可能拥有的任何文件持开放态度!

1个回答

感谢您在问题中提供大量背景信息。

是的,挂钩是要走的路。您想要挂钩的函数是执行 SSL 加密的函数,因为它将是接收明文作为输入的函数。

困难的部分是找到加密函数。为此,我建议您使用Process Monitor来捕获网络发送事件并双击这些事件以查看调用堆栈。然后,您可以使用反汇编器和/或调试器来分析调用堆栈中在低级网络发送调用之前调用的函数。这将帮助您缩小要分析的函数的范围,以便您可以更轻松地找到执行加密的函数。

或者,您可以尝试通过诸如带有 Krypto ANALyzer 插件的 PEiD 之类的工具搜索加密函数,然后使用反汇编程序对其进行分析来尝试找到加密函数