记录一次app抓包实践
之前写过一篇 程序员怎么做“竞品分析”:抓包工具的使用。如果不实践,这些内容在网上都能查到,但是自己尝试往往会失败。刚好昨天帮朋友解决一个小问题,抓包一款应用:http://app.xiaomi.com/detail/1295834。
先上截图:

看到toast提示了吧?“请关闭代理,在尝试”。本来我们设置好代理,用charles抓包。却看到了这个。貌似不知道怎么继续下去了。请跟我往下看,到最后大家会发现多数应用都有很多漏洞,我们很轻松地就可以利用这些漏洞。
突破口
hack的第一步,往往是先找突破口。突破口找得准,破解一个app就是分分钟的事情。
突破口有很多,比如最常见的就是字符串。软件注册,会提示“注册成功”,防代理,会提示类似上图的内容。
反编译一下,只要有工具,反编译其实就是点几下鼠标的事情。用jadx-gui-1.2.0-no-jre-win.exe打开apk,
搜索文本,跳转
如下图,HTTPCaller是个http请求的工具类,其中boolean checkAgent()
判断是否有代理。而且如果MLog.debug这个开关为true,就会跳过判断(貌似我们都爱这样写代码//此处有狗头)。如果把这个值改成true,就是所谓的debug模式了。
如下图,查找MLog.debug
的用例
如下图,查找MLog.debug的用例结果页,只有一处是写操作
如下图,查找setDebug
的用例
如下图,这个开关是从sp中读取,继续查找CoreConst.CORE_LIB_DEBUG_KEY
的用例
如下图,连续点击某个控件10次以上来修改开关。再继续查找OnLogSwitchClickListener
的用例,我们找到是webActivity的标题设置了这个点击事件。所以从这个app里找一个web页,比如“用户协议”页面。
结论
这个app有调试开关,打开app,我的->设置->关于->用户协议。然后连续点击标题“用户协议”10次以上,会toast提示“已开启调试模式”。这时就可以抓包了。
而且继续跟代码,会发现logcat里还有http日志,logcat的 tag就是http。所以,对于程序员们,调试开关不能乱加!不然太容易被利用了。