本屌是一个苦逼的爬虫,从入行到现在一年多,接触过各种反爬,什么检测自动化之类的都常见了,碰到js加密、app逆向的采集基本都是歇菜了,不过慢慢的还是接触这个,慢慢的学了很多。关于js解密的已经有一篇文章了,如果我说的不明确的话可以留言给我,我会回复的.
首先说一下做app逆向的几个工具,
1. dex2jar 这是个jar包,版本没啥限制选一个合适的版本就好
2.jd-gui这个可以将你反解出来的jar包打开,看里面的代码和结构
3.一台装有xposed框架的root手机,本人用的华为的nexus 6p (市面上都是二手的,最好买的时候换个电池,不然一直重启啥的)
4.android studio 编译你的apk,将你的xposed 插件装到手机上。
5.一定版本的app apk文件
由于工作的需求,破解了某鱼和某夕夕的apk。
首先将你的apk后缀改成 .zip,然后将你的包进行解压,有的解压工具可能是解不了的,换一个工具 或者用 unzip命令去解包,解了包 里面会出现很多文件 ,我们需要的就是 classes.dex 可能会存在多个类似的文件,我们只要这一个就好,将这个文件拷贝到下载好的 dex2jar 文件中,将你这个文件中的 d2j-dex2jar.sh d2j_invoke.sh 修改权限为可执行,然后执行
sh d2j-dex2jar.sh ./classes.dex
他会将你的包改成一个jar包,classes-dex2jar.jar,ok 你拿到这个jar包 就可以放到jd-gui中 了,里面会看到他所有的类和方法(有可能是混淆过的哦),这就该用到了这个工具的搜索功能了,搜你想hook的关键词,除非所有的类和方法都混淆过,不然你一定可以找到你想要的东西。
我想要的就是列表页的数据,搜索一下goods respoinse 等关键词,轻松的找到
com.xunmeng.pinduoduo.ui.fragment.search.entity.SearchResponse 这个类下面是我想要的方法。
既然找到了 接下来就是 在android studio中写hook代码咯
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{
if (loadPackageParam.packageName.equals("com.taobao.idlefish")){
XposedBridge.log("PackageName====>"+loadPackageParam.packageName);
XposedBridge.log("P