逆向工程Web应用程序

时间:2013-04-05 14:03:22

标签: javascript web protocols reverse-engineering

Aloha,Stackoverflow。

我经常遇到网络应用程序,并对自己感到疑惑,“我怎么能编写一个与之相关的脚本/应用程序?” (纯粹是学术性的,不是出于垃圾邮件的目的!)。

例如,网站上的;人们已经编写了Python脚本来与网站连接并在不打开浏览器的情况下运行聊天......怎么样?我承认WEB编程不是我最强的领域,但我真的想知道如何从这些应用程序中提取正在使用的协议,并利用这些知识创建自定义应用程序并修改服务。

所以基本上,我如何弄清楚网络应用程序的内部工作方式(即imeetzu.com,以便我可以编写代码来从我的桌面与它进行交互?

提前谢谢!

1 个答案:

答案 0 :(得分:9)

您需要一套工具来开始:

  • 带有调试窗口的浏览器(Chrome特别适用于此)。这将允许您特别访问您的浏览器直接所做的网络呼叫(有一个警告),并看到:

    • 他们的内容
    • 他们的参数
    • 他们的目标
  • 网络数据包嗅探器,用于追踪通过Flash(或WebSockets)的任何内容。我非常喜欢Ethereal(现在称为Wireshark),但如果你在美国,你可能会违反法律(取决于你使用它)。这将允许您查看进入和离开网络接口的每个TCP帧。

您需要的知识:

  • 识别和隔离网络流的能力。这是通过练习来实现的
  • 您正在尝试进行逆向工程的应用程序的语言知识。如果JavaScript不是您的一杯茶,请避免使用基于JS的东西
  • 数学和密码学。数据可能会不时被加密/混淆/加重。注意并留意它。

在这种特殊情况下,您可能需要处理Flash。虽然所有这些都是非免费的,但还有其他资源可以帮助解决这个问题。有一个名为SoThink SWF decompiler的特别好的Flash反编译器,它允许您将SWF转换为FLA或AS源集合。

这就是工具的全部内容。这种方法很简单 - 查看数据是进/出的,并通过消除什么来计算出来。如果它是加密的,你需要IV和样本来希望破坏它(或者只是反编译代码并找到密钥/握手的完成方式)。这是一个非常非常广泛的领域,我甚至没有触及冰山一角 - 随意询问更多信息。

(我怎么知道这一切?我是eAthena项目的贡献者,该项目反向设计游戏协议)