Web应用程序的逆向工程

5

你好,Stackoverflow。

我经常接触到各种网络应用程序,有时会想:“我该如何编写一个脚本或应用程序来与它进行交互?”(仅仅是为了学术研究,而非发送垃圾信息!)

举个例子,像Omegle这样的网站,有人编写了Python脚本来与该网站进行交互,从而在不打开浏览器的情况下进行聊天……这是如何实现的呢?我承认WEB编程并不是我的强项,但我真的很想知道如何从这些应用程序中提取协议,并利用这些知识创建自定义应用程序和调试服务。

因此,基本上,我该如何了解网络应用程序的内部工作原理(例如imeetzu.com),以便能够编写代码与其进行桌面级别的交互?

非常感谢您的帮助!


http://reverseengineering.stackexchange.com/ - DCoder
1个回答

10

你需要一组工具来开始:

  • 一个带有调试窗口的浏览器(Chrome 特别适合这个)。这将让你特别能够访问浏览器直接发起的网络调用(即将要有个警告),以及查看:

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

你需要的知识:

  • 识别和隔离网络流的能力。这需要通过实践来掌握。
  • 了解应用程序所使用语言的知识。如果 JavaScript 不是你的强项,就避免使用基于 JS 的东西。
  • 数学和密码学。数据往往会被加密/混淆/隐写。要注意并寻找它。

在这种情况下,看起来你可能需要处理 Flash。有其他资源可以帮助你,尽管它们都是非免费的。有一个特别好用的 Flash 反编译器叫做 SoThink SWF decompiler,可以将 SWF 转换为 FLA 或一组 AS 源码。

这就是工具的全部内容。方法很简单-看看哪些数据进出,并通过排除法弄清楚每个数据的含义。如果数据被加密,你需要 IVs 和样本才能希望破解它(或者只需反编译代码并找到如何完成密钥/握手的方法)。这是一个非常广阔的领域,我甚至还没有触及冰山一角-随时问我要更多信息吧。

我是如何知道这些的?我曾经是eAthena项目的贡献者,该项目对游戏协议进行了逆向工程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接