2013-04-05 114 views
2

Aloha,Stackoverflow。逆向工程Web应用程序

我经常遇到网络应用程序,并自问:“我该如何编写一个脚本/应用程序来与之交互?” (纯粹是学术的,不是为了垃圾邮件的目的!)。

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

所以基本上,我怎么能找出一个Web应用程序的内部工作原理(即imeetzu.com,这样我可以编写代码从我的桌面与它的接口?

预先感谢您!

+0

http://reverseengineering.stackexchange.com/ – DCoder 2013-04-05 14:04:39

回答

8

你需要一套工具入手:

  • 与调试窗口(Chrome是这个特别好)浏览器这将允许你在特定的访问网络调用浏览器直接使(有来一个警告),并看到:

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

的知识,你将需要:

  • 能够识别和隔离的网络流。这是通过练习
  • 知识的语言应用程序,你试图反向工程是写入英寸如果JavaScript不是你的一杯茶,避免基于JS的东西
  • 数学和密码学。数据可能会很好地被加密/混淆/不时地混淆。注意并注意它。

在这种特殊情况下,看起来您可能不得不处理Flash。还有其他资源可以帮助解决这个问题,尽管所有这些资源都是非免费的。有一个特别好的Flash反编译器叫做SoThink SWF decompiler,它允许你将SWF变成FLA或AS源的集合。

这就是所有的工具。这个方法很简单 - 查看数据进出的数据,并通过消除什么是数据。如果它被加密了,你需要IV和样本来希望打破它(或者只是反编译代码,并找出密钥/握手是如何完成的)。这是一个非常非常广泛的领域,我甚至没有触及冰山一角 - 随时索取更多信息。

(我怎么知道这一切呢?我是一个贡献者百百项目,反向工程游戏协议)