因为最近在找实习,发现招爬虫的很多都要求掌握APP逆向,所以学习一番,就记录一下吧
一、先抓包看下请求信息
我是用的fiddler工具的,具体怎么配置网上都有很多教程(需要注意的是电脑和手机需要在同一个局域网下)
通过抓包可以看到signature是需要解密的参数
二、查看加固方式
通过apktool d xxx.apk反编译
可以看到是乐加固的加密特征(libshella),然后就开始脱壳了。。。
三、脱壳找加密位置
这里我用的是FDex2(是一款基于xposed的脱壳工具)
1、打开Xposed Installer,点模块
2、就会看到FDex2了,选择要脱壳的app
3、找到com.iCitySuzhou.suzhou001这个文件夹,在这里我踩了个大坑。。。
我手机下载的是文件管理器,因为权限的问题我一直找不到脱壳后的文件,请教平哥后得到的方案就是用ls命令查看文件夹。
这里要配置挺多环境的(自行百度,都挺好解决的),输入adb shell,如果出现上图的效果说明配置成功了,这里还要给个权限,输入su,手机会出现个小弹窗,允许就ok
然后就是输入刚才的路径找文件,再把dex文件mv到/sdcard
四、找加密位置
在这几个dex文件里,慢慢慢慢慢找就会找到,下图这个文件了
全局搜索"signature",就很好找到加密位置了,
"signature", m12059a(udid, valueOf),加密是m12059这个方法,选中它右键跳到声明处
udid是设备号,valueOf时间戳,然后再用同样的方法跳到C2387a.m11218a
可以看到这是个MD5加密,这时候可以用python改写实现MD5加密,也可以调用jpype库来实现,我这里两种方法都实现了一次。五、请求数据
方法一、python改写
方法二、jpype实现
我们先放到java环境跑下,看下效果
没啥问题,接下来就是编译Java成class,把class做成jar(具体自行百度)