代码之家  ›  专栏  ›  技术社区  ›  Chii

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

  •  5
  • Chii  · 技术社区  · 17 年前

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

    十六进制客户端需要一个额外的dll才能运行,而旧客户端没有。我假设hex-ed客户端以某种方式加载了该dll(我们称之为client.dll),该dll的功能是通过连接到一些windows api来实现加扰/解扰,这些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

    2 回复  |  直到 17 年前
        1
  •  3
  •   Irwin    17 年前

    我想编码这个的人 为上述程序的数据包I/O添加加密的 钩住的 WSASend , send 等)或钩住用于发送/接收数据的内部程序功能。

    话虽如此,我建议您使用钩子检测程序(例如。 胡克胡克 )找出到底是什么东西被钩住了。一旦你知道什么API被钩住了,你也应该知道这些钩子将要去哪里,从那里开始,你必须手动对钩子函数进行反向工程。

    至于学习如何做到这一点的主题,我不能指导你只使用一个教程来教你所有的东西,但我强烈建议你看看 Tuts4You 网站上有大量的教程,可以满足您的所有需求。

    如有可能,上传一份已编辑的客户端&钩子DLL,如果我有时间,我会给你编码副本加密&解密函数。

        2
  •  2
  •   Sandeep Datta    17 年前

    here 有关API挂钩的一些信息。您还需要一次很好的调试器尝试 Windbg 来自微软。

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

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