标签:配置文件 apk 根目录 就是 安卓系统 tps 密码 tab键 uid
在测试某个app的时候,抓取数据包,发现某些参数存在被加密的情况,或者有签名校验的情况,这个时候如果我们想直接去篡改数据包的内容往往是做不到的,那就来看看抓取的某个app登录数据包,如下所示,password字段明显进行了加密:
接下来,就开始通过JEB对apk进行反编译后动态调试定位关键加密函数。
在Android系统中,如果需要调试Android应用程序,需要满足以下两个条件之一:
对于上述的第一个可以调试android应用程序的条件,在android应用商店等下载的正式上架应用,通常不会遇到在AndroidMainfest中设置了android:debuggable="true"的情况,所以如果想要使用第一种方法,通常就需要对apk进行解包添加android:debuggable="true"再打包,随着加壳软件以及apk本身的校验等防护措施,再重新打包apk的过程往往容易出现异常,不容易成功,而第二种调试的条件在手机发布时或者官方的原版rom包中,ro.debuggable=0,也就是说默认不允许调试的,可以通过刷机的方式或者临时修改内存的方式进行修改:ro.debuggable=1
打开反编译工具JEB,直接将需要反编译的apk(未加壳)文件拖到JEB中即可进行反编译得到smali代码和java伪代码
等待一会儿,反编译结束如下:
根据截取到的登录数据包中的参数关键字(mobile_tel、op_station、mobile_uuid、terminal_os、terminal_platform、terminal_device、password、channel)在JEB的反编译文件Byecode中进行搜索,定位加密的关键函数的位置。
ctrl+F 开始进行搜索:
搜索到以下位置,不止一处位置类似与以下位置,将搜索到的此类似位置都打上断点
将可能的位置都打上断点过后,接着就开始进行调试了。
如果刚才下的所有断点当中存在正确的,则点击登录过后jeb会直接停在正确断点位置,反正,没有任何效果,说明断点没有打在正确的地方,需要重新搜索。
在调试过程当中,会提示程序没有响应,记得点击等待
发现password的值是由v0_2赋值而来
双击v0_2,跳转到如下位置处,说明v0_2的值在onClick()函数中得到:
继续在onClick()函数中找其他v0_2所在的位置
双击encrypt,跳转到加密函数所在位置
通过分析,基本可以确定此处就为password字段加密的函数位置所在
接下来可以再通过下断点加以确定,回到以下java源码位置,再按tab或者解析回到此位置对应的smali代码处并打下断点:
重新点击app应用的登录,成功跳转到调用加密函数的断点位置,如下:
实现加密的函数如下:
实现解密的函数如下:
解密需要用到的相关密钥被硬编码如下:
将数据包中抓取到的加密字段进行url转码过后解密如下,得到加密之前的原始密码
标签:配置文件 apk 根目录 就是 安卓系统 tps 密码 tab键 uid
原文地址:https://www.cnblogs.com/ldhbetter/p/11286083.html