本帖最后由 Mitjavaz 于 2015-8-19 23:31 编辑
大家好,今天本新人又带来了新手教程,希望各位勿喷。 本教程依然是低级(即:新手级)教程,目的是为众零基础而又对这方面感兴趣的朋友所写。
※ 此次教程的目的:
找付费项目地址,实施有效爆破。
※ 本次教程的知识点:
初步认识Handler机制,或者说,建立对Handler机制的一个认识概念。
线程安全和线程不安全。
此次教程所使用的工具:
pd521【逆向未来论坛】所提供的:Android Killer v1.2 正式版
此次教程所使用的案例:
名称:消灭星星道具版 下载地址:http://www.eoemarket.com/game/708029.html 好了,下面开始进入此次教程的主题: 我们还是按照万年不变的步骤,用模拟器或手机安装应用程序,并进入软件里面,寻找相关【关键词】或【关键按钮】等等。 结果一进入里面,就把人吓到了,直接一次性跳出三个窗口: 一 二
在此,会觉得很人性化,似乎对方来欢迎别人逆向一样,专门主动出门迎接来了。 由于本人比较懒的缘故,就将词选得比较大,选了如下几个词作为后面搜索用的关键词: 图一选择:付费 图二选择:失败 好了,前期准备工作做好了,现在开始,将游戏的apk用Android Killer打开,并且通过字符串搜索:付费、失败两个关键词。 付费: 失败: 通过这两个词搜索出来的字符串,我们第一眼,甚至我们条件反射下,定位的是【失败】这个关键词搜索出来的结果。 PS:因为有支付失败嘛,正好符合我们图二的要求。 将支付失败这个词出现的类全部打开。 然后接着是将两个文件的JAVA源码弄出来,方便分析。 看到JAVA源码,大家是不是很兴奋。 但是这里,改那个IF条件里的条件语句:paramInt == 9000 改成 paramInt != 9000 没效果。虽然最后会跳出文本框出来,说支付成功,但是测试时,依然没效果。 那么,这时候,会有一个想法:这种现象,是因为里面只有文本输出,并没有实际支付成功后的函数调用,因此,没效果。 那换第二个图的时候,一目了然,很简单,把支付失败那个类的源码全部改成支付成功的源码,即: 原来的源码: public void onZhangPayBuyProductFaild(String paramString1, String paramString2) { Log.d("支付失败:", "支付失败!响应码:" + paramString2 + ",计费id:" + paramString1); this.val$paramIOnPaymentCallback.onBuyProductFailed(this.val$paramVo_Pay); }
public void onZhangPayBuyProductOK(String paramString1, String paramString2) { UMGameAgent.pay(10.0D, 1000.0D, 26); this.val$paramIOnPaymentCallback.onBuyProductOK(this.val$paramVo_Pay); } 修改后的源码: public void onZhangPayBuyProductFaild(String paramString1, String paramString2) { UMGameAgent.pay(10.0D, 1000.0D, 26); this.val$paramIOnPaymentCallback.onBuyProductOK(this.val$paramVo_Pay); }
public void onZhangPayBuyProductOK(String paramString1, String paramString2) { UMGameAgent.pay(10.0D, 1000.0D, 26); this.val$paramIOnPaymentCallback.onBuyProductOK(this.val$paramVo_Pay);
} 但是,依然没效果,真是到此时,估计很多新人就跟我这个新人一样,第一次遇到,总会慌神,这是怎么回事儿?
下面开始进入真正的主题
致谢:逆向未来论坛
PS one:本人新人一枚,所学肤浅,还请各位勿喷。对于Handler机制,我真心不是很能体会出来作用。此篇写得不好!若有误人子弟之处,还请多多原谅,多多包涵。
PS two:给跟我同样是新人的一个建议,就是有时间,多找android开发的一些组件函数之类的看下,不求自己能运用,但求逆向之时,遇到了也能知道它啥意思。 |