浅谈Frida以及Hook的相关知识


1.搭建python开发环境

        这里用到python语言,因为不是专门开发python,所以我们安装Anaconda即可,下载地址https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=A;这里我们下载的版本是Anaconda3-2018.12-Windows-x86_64.exe

       安装步骤一直next即可,但是要注意其中的一步,这里两个都需要勾选,上面那个应该是表示添加环境变量的意思。

       

       安装完成之后cmd输入python命令,出现如下界面即安装成功

       

 2.下载并安装frida

    安装地址链接:https://pan.baidu.com/s/1Ryro2WNYPfnI5pje22oX4Q 提取码: v87v,安装版本:frida-server-12.8.13-android-x86。

    cmd命令安装frida----pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ frida==12.8.13

    cmd安装frida-tools----pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ frida-tools==7.0.2

注意:

  • 因为可能电脑之前安装过比python3.7还要低的版本,本次安装anaconda相当于升级了python,但是工具pip和setuptools没有被升级,所以导致安装frida失败找不到版本号。
  • 如果pip显示找不到对应版本 应该先升级 pip:
    报错:

    命令:
    python -m pip install --upgrade pip

          升级setuptools:
          命令:
          pip install --upgrade setuptools

  • 升级完就可以继续安装frida和frida-tools,过程较慢,耐心等待。

      检查安装情况,输入pip list|find "frida",如下图界面即安装成功

      

 3.visual studio code编辑器

       了解:https://baike.baidu.com/item/visual%20studio%20code/17514281?fr=aladdin,

       在第一步安装Anaconda的时候中间有个步骤可以直接安装;若是忘记也可以用这个安装包,链接: https://pan.baidu.com/s/1sT6Mmd9PqHxzvVDX9zJdNQ 提取码: rug2 。

       初步试用visual studio code ,https://www.jianshu.com/p/95c4c869bff1(供参考)

4.逍遥模拟器

   安装包链接: https://pan.baidu.com/s/1PJQytbyw2-ndg062j_081w 提取码: e4eg。打开逍遥多开器,界面如下

   

   这里默认出现第一个模拟器,当然我们也可以自己新建所要的手机模拟器版本。

5.具体操作

下面说的frida-server-12.8.13-android-x86安装包链接: https://pan.baidu.com/s/1eAq5m9-A-BlOGSUuJ0VAJQ 提取码: y4wi 

1、新建一个文件夹,用studio打开,在这个文件夹下新建一个后缀为.js的文件。
2、新建一个手机模拟器,版本7.1(bit64),调整样式后打开这个模拟器,记住是第几个模拟器。默认第一个模拟器的端口号为21503,后续为21513、21523...
3、打开豌豆荚,找到所需要破解的手机APP版本,下载安装到刚才新建的手机模拟器中。
4、切换到studio刚才新建的.js文件,使用ctrl+~调出终端命令窗口,将frida-server-12.8.13-android-x86拷贝到.js文件的同级目录中。
5、先使用adb devices 命令查看有无手机连接,然后使用adb connect 127.0.0.1:端口号(见第二步)连接到所开启的手机模拟器。然后adb push frida-server-12.8.13-android-x86 /data/local/tmp,这就相当于将studio中的这个文件夹push到手机模拟器中
6、使用adb shell进入到手机模拟器中,先输入su,之后cd /data/local/tmp进入到手机模拟器中的这个目录下,然后使用ls查看是否push到这个文件夹下。在这  个目录下输入chmod 777 frida-server-12.8.13-android-x86,相当于给这个文件最高的权限。然后exit退出编辑
7、使用adb forward tcp:27042 tcp:27042实现转发功能,为了让手机跟电脑连接,这里frida默认端口号为27042。为保证转发成功,可以多转发几次。
8、类似步骤6,adb shell 然后su,cd /data/local/tmp,接着./frida-server-12.8.13-android-x86 启动这个服务。

HOOK
1、可以再开启一个终端,输入frida-ps -U或者adb shell pm list packages查看手机模拟器(需打开hook的APP)中所有的包名,找到我们需要破解的APP包名。
2、切到刚开的终端,输入frida -U 包名 -l 文件名,(例如frida -U com.soufun.app -l Hook.js)

再接下来就是看源码了,用到一个看源码的软件,链接: https://pan.baidu.com/s/1XVUjvkFl9nu7YbzUyhr9yg 提取码: 5t6h。

思路:我们想要破解某一个APP的接口,上述条件是最基本的。在模拟器上操作时,我们还需要用fidder抓包,检查所返回的数据是不是我们所要的。然后对这个抓到的包发送http请求解析参数。一个个尝试直到找出影响结果的参数,一般这样的参数都是token之类的,都是进行加密封装过的,所以就需要我们看源码,然后找到相应的类或者是方法,进一步解析是如何对这个参数进行加密操作的。这样才是一个完整的解析过程。(此过程中模拟器以及相关APP不能关闭)

       当我们更换APP的版本时候,只需要重新转发,然后启动这个服务就可以了,push跟给最高权限无需重新输入命令,因为我们并没有更换手机,推送到手机中的那个文件还是在的,无需重复操作。