windows - 如何在 Windows 应用程序中对加扰数据包进行逆向工程?

标签 windows dll encryption reverse-engineering code-injection

我有一个 Windows exe 应用程序,用于将数据包以明文形式发送到服务器。这个应用程序(我们称它为客户端应用程序)绝对是封闭源代码的,但一些聪明的黑客对二进制文件进行了十六进制编辑,并使其发送经过加扰的数据包。

现在,显然,这些数据包以一种可破译的方式加扰(否则服务器将无法理解),但我想做的是编写一个模拟此二进制应用程序的模拟器,发送相同的将数据包发送到服务器,并能够对响应进行解密(如果已加扰)。

hex-ed 客户端需要一个额外的 dll 才能运行,而旧客户端则不需要。我假设十六进制客户端以某种方式设法加载了该 dll(我们称之为 client.dll)并且该 dll 的功能是通过 Hook 到一些重新路由从client.exe进程。

如果有人可以指导我如何开始研究这一切的工作原理,以及我如何对加扰进行逆向工程,我将不胜感激。

我不知道要提供什么样的信息,但如果有任何不足,请回复,我会发布更多详细信息,如果有人想要二进制文件,我很乐意提供。


任何感兴趣的人都可以下载二进制文件:

http://dl.getdropbox.com/u/46623/client.dll

http://dl.getdropbox.com/u/46623/newClient.exe

http://dl.getdropbox.com/u/46623/originalClient.exe

这些不会运行,因为需要资源文件 - 它们大约有 3 个演出,太大而无法上传到任何地方。名称已更改以保护有罪 =) ,但这可能不会保护 dll 的名称...

最佳答案

我假设编写这个hook 的人已经hook 了相关的 Windows 套接字 API,它为上述程序的数据包 I/O 添加加密(WSASendsend 等)或挂接用于发送/接收数据的内部程序函数。

话虽如此,我建议您使用 Hook 检测程序(例如 RkUnhooker)来找出实际被 Hook 的内容。一旦知道 Hook 了哪些 API,您还应该知道这些 Hook 的去向,从那里开始,您将不得不手动对 Hook 函数进行逆向工程。

至于学习如何做到这一点,我无法指导您只看一个教程来教您一切,但我强烈建议您查看 Tuts4You网站,它有大量的教程可以满足您的所有需求。

如果可能,请上传一份已编辑的客户端和 Hook DLL,如果我有时间,我会为您编写复制加密和解密功能的代码。

关于windows - 如何在 Windows 应用程序中对加扰数据包进行逆向工程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545172/

相关文章:

java - 为什么附加到文件时 Windows 和 Linux 机器上的 file-io 会产生不同的结果?

c++ - 强制 Qt5 从 exe 目录加载 SSL dll

dll - LabVIEW中的异步DLL访问?

c# - 如何测试某些程序集是否已加载到内存中?

c++ mingw STL安装

windows - 让 IExpress 安装以将文件复制到正确的位置

c++ - 从 QTableWidget 行/单元格拖动在 Windows 中创建可放置文件链接

c - 如何在 RC4 上暴力查找内部状态?

objective-c - AFNetworking + RNCryptor - 在 JSON 解析之前解密数据

security - 如何对加密库进行基准测试?