我有用于发送报文到明文的服务器的窗口的exe应用程序。此应用程式(让称之为客户端应用程序)是绝对紧密来源,但一些聪明的黑客己编辑的二进制,并使其发送被扰码的数据包。

现在,很显然,这些数据包进行加扰的方式,是破解的(否则服务器将无法理解它),但我想要做的是编写模拟这个二进制程序模拟器,发送相同的数据包发送到服务器,并能够解读的响应(如果它被加扰)。

所需的十六进制编辑客户端,以运行一个额外的DLL,其中,旧的客户端没有。我假设,不知怎的,十六进制编辑客户端管理加载该DLL(让我们称之为它client.dll)和该DLL的功能是实现加扰/解扰码,挂接到一些窗口的API,改道从发送的所有数据包client.exe过程。

如果有任何人谁可以告诉我如何甚至可以在工作了这一切是如何开始工作,我怎么能逆向工程scrambing,那将非常感激。

我不知道提供什么样的信息,但如果有任何欠缺,只是回复,我将发布更多的细节,如果有人想二进制文件,我很高兴来提供它。


二进制下载任何有关各方:

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用于发送/接收数据(WSASendsend等)或钩在内部程序的功能。

这是说,我建议你用一个钩子检测程序(例如 RkUnhooker 的),找出实际上是被钩住什么。一旦你知道是什么挂钩的API,你也应该知道这些钩去,并从那里你必须手动反向工程的钩子函数。

至于学习如何做到这一点的问题,我无法引导您到只有一个教程,教你的一切,但我强烈建议你看的 Tuts4You 网站,它具有能够满足您的所有需求教程太多了。

如果可能的话,上传编辑客户端与钩子DLL的一个副本,如果我有时间,我会代码,你复制加密与解密功能。

其他提示

您需要挂钩由额外的DLL导出的功能,并期待到被调用的函数,并传递给它们的参数。这不是一件容易的事,因为你没有类型信息(例如对于DLL导出函数签名。)

此处上API钩子的一些信息。您还需要一个良好的调试器尝试 WinDBG的从微软。

据我可以看到你在这里唯一的选择是黑盒测试即给予已知输入两个系统,并进行相互比较的响应找到的差异和相似之处。

               +--------------+
Input--------->| Original App |--------->Response1
               +--------------+

               +------------+
Input--------->| Modded App |--------->Response2
               +------------+

现在,一旦你弄清楚如何从额外的DLL使用的功能,你可以以同样的方式将原来的应用程序不会自己使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top