逆向工程Web应用程序

ara*_*bec 4 javascript protocols reverse-engineering web

Aloha,Stackoverflow.

我经常遇到Web应用程序,并对自己怀疑,"我怎么能编写一个与之接口的脚本/应用程序?" (纯粹是学术性的,不是出于垃圾邮件的目的!).

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

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

先感谢您!

Séb*_*uld 9

您需要一组工具来开始:

  • 带有调试窗口的浏览器(Chrome特别适用于此).这将允许您特别访问您的浏览器直接进行的网络调用(有一个警告即将发生),并看到:

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

您需要的知识:

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

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

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

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