前言
有时候可能会对APP进行字符串加密等操作,这样的话你的变量名等一些都被混淆了,看代码就可能无从下手
不管没关系,像系统级别的东西,Toast了等函数,是不能混淆的,所以可以根据蛛丝马迹,终究找到破解的点
frida常用命令
打印堆栈
打印堆栈的本质就是抛异常,他的结果是从下往上看的!
代码
执行结果
常用hook函数代码
hook HashMap的put方法
hashMap,,那就很常用了,懂的都懂,但是一定要做好筛选,要不然app容易崩溃!
hook ArrayList的add方法
Array似乎也很常用
hook TextUtils的isEmpty方法
这个方法通常是安卓判断输入框是否为空必经的方法!
hook String的trim方法
这个方法似乎也挺多,去掉开头和结尾的空格,防止脏数据
hook log的w方法
hook EditText的getText方法
这个应该就多了,但是这个一般在加密的上层,可以考虑使用。
hook Collections的sort方法
排序方法,频率还凑合
hook jSONObject的put方法
一般在转成json时用的听过的,可以考虑
hook Toast的show方法
这个就很多了,基本上每个app都有,但是hook这个位置又偏加密下层,因为肯定是处理完才弹窗
但是可以考虑不输入账 密码直接提交,这样位置大概在加密的上层,可以顺着往下走
hook Base64的encodeToString方法
base64就很多了吧,除了消息摘要算法其他最后的形式都是base64格式,很有必要。
hook String的getBytes方法
findViewById找控件方法
这种方式hook代码,需要frida帮助我们启动app。
所以本次启动的命令为
因为可能一开始就绑定了很多控件,所以一开始就要开始hook。
如何找控件id
控件id可以通过<SDK目录>toolsbin下的uiautomatorviewer.bat来进行查看
查看登录按钮id
所以这个登录按钮的id就是btn_login
代码
简单用法
在嘟嘟牛这个app中,最后使用的是DES算法,并且base64结果展示加密的内容。
所以就hook一下base64试试
代码
hook结果
所以如果说,你如果看结果像是base或者md5或者hex等,直接就使用这些常用的hook代码试一下,并且抛出堆栈。
就可以很好分析代码了。
总结
虽然写的是关键代码定位,其实只不过是常用的代码罢了,上面这些使用在逆向app时总结的hook代码。
当然,实际肯定不止这么少,根据需求来,经验越多,轮子就越多。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!