我有一个Windows exe应用程序,曾经以明文方式发送数据包到服务器。这个应用程序(我们称其为客户端应用程序)肯定是封闭源代码的,但一些聪明的黑客通过十六进制编辑二进制文件,使其发送混淆的数据包。
现在,显然,这些数据包以一种可解密的方式进行了混淆(否则服务器将无法理解它),但我想做的是编写一个模拟器来模拟此二进制应用程序,向服务器发送相同的数据包,并能够解密响应(如果它被混淆)。
十六进制编辑的客户端需要一个额外的dll才能运行,而旧客户端则不需要。我假设十六进制编辑的客户端成功加载了该dll(我们称其为client.dll),该dll的功能是通过挂钩某些Windows API来重新路由从client.exe进程发送的所有数据包来实现混淆/解混淆。
如果有人能指导我如何开始研究所有这些工作,以及如何反向工程化混淆,那将非常感激。
我不知道要提供什么样的信息,但如果有任何缺失,请回复,我会发布更多细节,如果有人想要二进制文件,我很乐意提供。
现在,显然,这些数据包以一种可解密的方式进行了混淆(否则服务器将无法理解它),但我想做的是编写一个模拟器来模拟此二进制应用程序,向服务器发送相同的数据包,并能够解密响应(如果它被混淆)。
十六进制编辑的客户端需要一个额外的dll才能运行,而旧客户端则不需要。我假设十六进制编辑的客户端成功加载了该dll(我们称其为client.dll),该dll的功能是通过挂钩某些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
这些无法运行是因为需要资源文件 - 它们大约有3GB,所以太大了无法上传到任何地方。名称已更改以保护罪犯的身份 =),但这可能无法保护dll的名称...