Blog.GC

面向开发者的MAWalker使用说明

| Comments

MAWalker首页:github

如果你无意接触更深层次的东西,请点击这里查看基础使用教程

先说点废话: 我本来是一点都不会java的,也没接触过安卓编程。自从玩了MA之后,学了java,学了逆向apk。话说之前有人QQ上和我说要源代码学习一下,但是不会java,我给拒绝了。不过当时确实没有公开源代码的想法,但同时更重要的一点是:如果一点java也不会,直接从别人的源代码学习是非常不恰当的,因为作者(比如我)也未必熟练使用这门语言,所以会学不扎实,同时也有可能学到许多不好的编程习惯。其实我一点都不喜欢java,现在也是。之所以使用java,主要还是想到GP版(没有肾机的屌丝)是java写的,可能挂写起来比较容易。嘛,废话少说,进入正题。

##本文包含如下内容:

1. MAWalker的高阶使用

2. 源代码的大致结构

3. 编写自己的代码

MAWalker的高阶使用

MAWalker支持直接进行网络数据包的解密(iOS的由于加密方式不同请自觉绕过,SEQ的不知道行不行),这是想要研究数据包的重要工具,你可以把使用fiddler截下来的包,把相应的body保存下来(假设保存为x),然后使用下面命令:

1
java -jar go.jar config.xml -f2 x

其中由于MA传输共有两种加密方式,一种是使用基础密钥加密,另一种是使用用户名加密,分别对应参数-f1-f2。 同样也可以使用-d1-d2对request的参数进行解密。

源代码的大致结构

正如刚才的瞎扯所说,我对刚学java,所以没有代码什么巧妙之处,但是我自认为我编程习惯良好,就是不爱写注释(本来就是一小程序),所以稍微介绍一下,总体来说阅读代码不会有太大的困难的。 可以看出这个程序共有4个package,其中net包是网络通信相关,一般不用改。action包是某个具体操作,info包是相关信息,walker是外壳。

程序的执行流程非常简单,就是下列流程的循环:

1. 检查相关信息,处理错误与事件,添加可行操作	
2. 使用Think权衡各种操作,选择最佳操作
3. 执行操作,处理结果,或者引发错误,或者触发事件

具体就请查看源码吧。

编写自己的代码

我知道,应该有些人会写代码,只是不知道MA是怎么加密的,所以看到我这个源代码之后,便会自己去写自己的程序,我很赞成,不然我也不会开放源代码。 但是如果你比较懒,只是想在我的代码基础上进行改进,那么下面的文字应该对你有用。 想要增加功能,需要这么几步:

  1. ActionRegistry类中添加你的新功能名字
  1. Info类中添加你想使用的相关信息
  1. Process中的getPossibleAction()中添加新功能激发条件,在execute(Action)中添加执行后的处理工作
  1. Think类中添加新功能的执行条件以及如何与其他操作进行权衡
  1. 编写新功能的主体代码

如果你愿意,欢迎给我来个pull request,前提是你之前fork了我的项目,而不是只是下载了我的源代码。 如果你只下载了源代码,而又想与我分享的话,欢迎发送邮件,我看情况将代码加入,请放心,加入时一定会标明作者的(除非你不愿意)。 以上均建立在我有空且有心情的情况下,特此注明。

声明

本程序遵循MIT协议发布,如果使用或修改了本程序中的代码,请按协议要求包含版权声明和许可声明。

Comments