我有一个Windows exe应用程序,用于将数据包发送到服务器。这个应用程序(我们称其为客户端应用程序)肯定是近源的,但是一些聪明的黑客对二进制文件进行了十六进制编辑,并使其发送被加扰的数据包。
现在,很明显,这些数据包以一种可解密的方式被加扰(否则服务器将无法理解它),但是我想做的是编写一个仿真器来模拟该二进制应用程序,将相同的数据包发送到服务器,并且能够解密响应(如果已加密)。
十六进制客户端需要一个额外的dll才能运行,而旧客户端则不需要。我假设十六进制客户端设法以某种方式设法加载该dll(我们称其为client.dll),并且该dll的功能是通过连接到一些重新路由从Windows XP发送的所有数据包的Windows API中来实现加扰/解扰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的名称...
最佳答案
我假设对这个钩进行了编码的人(将加密添加到上述程序的数据包I/O中)已经将钩了和相关的Windows套接字API(WSASend
,send
等)或钩了了内部程序功能用于发送/接收数据。
话虽如此,我建议您使用钩子(Hook)检测程序(例如RkUnhooker)来找出实际被钩住的东西。一旦知道了 Hook 的API,您还应该知道这些 Hook 的去向,并从那里开始,您必须手动对 Hook 函数进行反向工程。
至于学习如何做的主题,我不能只指导您使用一个教程来教您所有内容,但是我强烈建议您浏览Tuts4You网站,该网站有很多可以满足您所有需求的教程。
如果可能的话,请上传已编辑的客户端和 Hook DLL的副本,如果可以的话,我会为您编写复制加密和解密功能的代码。
关于windows - 如何在Windows应用程序中对加扰的数据包进行反向工程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/545172/