搞过不少flash游戏的逆向分析,这两天居然被一个多年前的游戏给难住了。

现在想想,原因就是我太依赖于那几个工具,写pcode的时候都是直接通过工具去改。

例如使用ffdec分析城堡破坏者的as2脚本出错,导致我重写回去的时候发生了bug。

用另外一个工具导出为xml,也无法正确分析。

最后这个怎么解决的呢?

直接上HxD,找到了所谓的加密脚本,发现代码头(ACTIONRECORDHEADER)有一些不是常规的AVM1代码头(抑或是上古版本?游戏作者使用了改写过的flash播放器?),比如这一段:

A3 0B 00 08 01 06 00 00 00 00 00 00 00 00 4F

代码头A3就不对,没有这种代码头的。

反编译工具由于识别不了这种代码头,就直接略过不读,最终出现了getmember之后立刻setmember这种奇怪的pcode。

综合前后数据分析,这段的A3应该可以无缝改写为96,即push,0B代表00之后的数据长度,4F就是setmember。

有了这个思路,就可以把这个代码块扒出来,再跑一段程序把不认识的代码头找出来,分析之后替换为正常的代码头再重写回去。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐