情色亚洲

格林童话 Lab4 Frida动态插桩

         发布日期:2024-10-27 05:32    点击次数:72

格林童话 Lab4 Frida动态插桩

一、实验策划

1. 学习和协调adb调试器用的基本使用轨范,大约熟练使用adb器用的常用敕令;

2. 闇练Frida动态插桩器用的基本使用轨范,大约字据需求使用Frida对Java层代码进行径态插桩。

二、前置准备

1. 常识学习

进行本实验前请先完成课本第2章、第5章和第6章的学习,主要包括2.2.2节安卓欺诈调试环境搭建,5.1.1节逆向器用Jadx的使用。

2. web劳动搭建

从安卓官方装配adb器用,并将其添加到环境变量。

常用敕令如下:

ADB敕令刻画adb devices稽查手机建筑adb install package装配欺诈adb shell畅达结尾的shelladb shell pm list packages -3稽查手机里悉数的第三方包名,要是依然在shell,则不需要加adb shelladb push D:/xx.text /sdcard/xx.text将主机上的文献发送笔直机adb pull /sdcard/xx.text D:/xx.text将手机上的文献下载到主机adb shell am start -n包名/类的全名 启动导出的行径adb logcat稽查log日记adb shell dumpsys activity top | grep ACTIVITY稽查现时运转的Activityadb shell getprop ro.product.cpu.abi稽查手机的abi

3. Frida环境树立

最初需要树立python3环境,之后使用pip/pip3下载Frida联系的包

pip3 install frida pip3 install frida-tools pip3 show frida   稽查frida的版块,默许装配最新的16.2.1

下载与frida版块一致的frida server,举例arm64的建筑下载frida-server-16.2.1-android-arm64。将server通过adb器用传输笔直机,赋予可奉行权限并启动。

以frida-server-16.2.1-android-arm64为例:

adb shell    su cd /data/local/tmp chmod 777 frida-server-16.2.1-android-arm64 ./frida-server-16.2.1-android-arm64

4. Frida剧本自动补全

欧美日韩av无码在线

1. 从NodeJs官网装配Node.js

2. 编写JS剧本可参考Frida官网的JS API,为了便捷编写,可荟萃VS Code树立剧本自动补全功能。使用cnpm/npm i @types/frida-gum将模块装配到现时目次。

3. 使用VS Code掀开该目次,创建test.js之后即可使用Frida代码补全功能。

5. Frida基本使用格林童话

使用经由:编写注入剧本,注入指定程度

- frida -U XXX -l frida_1.js XXX是包名、程度名 -l 后跟注入的剧本

- frida -U -p[pid] -l frida_1.js 指定程度id注入,可字据frida-ps -U | grep “xxx” 寻找程度id

- frida -U --no-pause -f XXX -l frida_1.js 使用spwan方法启动,注入时机较早

编程语法:注入java层的代码在Java.perform下编写,具身体式如下:

function hook_java() { Java.perform(function () {     ...   });  }

其他使用轨范可参考官网API,或网上的学习府上。保举阅读

三、任务刻画

本实验的任务需要使用Frida器用对Java层进行Hook,完成以下四个任务,最终获取Flag。

任务1 修改复返值

启动欺诈是一个登录页面,需要输入用户名和密码。使用Frida Hook联系函数,兑现轻易用户名密码登录。

任务2 修改换量的值

登录后参加第二关,需要修改换量让我方成为VIP,何况缔造cnt的值大于100。

任务3 主动调用函数

字据页面指示,使用Frida主动调用联系函数,缔造文本浮现框的值为Secret的值。

任务4 动态加载dex的Hook

通过考证,获取Flag值。

四、成果提交形势

1. lab4_code.zip:本次实验中的实验代码,每个任务编写一个Frida函数,并将通过该任务的Frida代码写在该函数内,第一个任务对应函数名为hookLogin、第二个为hookChall1、第三个为hookChall2,第四个为hookChall3

2. lab4.docx:本次实验的实验评释,包括实验环境树立、实验设施、实验成果和实验心得等施行

五、评分标准

1. 完成任务1(10%):通过注入兑现轻易用户名和密码登录

2. 完成任务2(20%):收效修改换量值

3. 完成任务3(20%):收效调用函数修改文本

4. 完成任务4(20%):收效获取正确的Flag值

5. 实验评释(30%):

- 施行圆善性和原创性(20%)

- 评释包含实验意见、详备设施、成果、讲究想考等重要部分

- 代码瞎想谨守代码范例,有必要的解说证据

- 评释撰写和抒发(10%)

- 评释形势范例,说话抒发了了

- 大约合适使用图表等扶植证据评释施行

六、附件施行证据

1. FridaLab.apk:本实验的分析策划

七、参考谜底

任务一:在考证用户名和密码时,调用了里面类中的check进行判断,修改该函数的复返值为true即可兑现轻易用户密码登录

function hookLogin(){ Java.perform(function(){     var checkLogin=Java.use("com.lab.fridalab.MainActivity$checkLogin");     checkLogin.check.overload("java.lang.String","java.lang.String").implementation=function(usr,pwd){      console.log("checkLogin.check: "+usr+' '+pwd);             return true;      }    });  }

任务二:需要修改isVIP和cnt变量,isVIP是静态变量可径直修改值,cnt是实例变量需要寻找现时Activity的对象,并修改该对象中cnt的值

function hookChall1(){ Java.perform(function(){      var ChallActivity1=Java.use("com.lab.fridalab.ChallActivity1");      ChallActivity1.isVIP.value=true;      Java.choose("com.lab.fridalab.ChallActivity1",{          onMatch: function(instance){              console.log("=== find ChallActivity1 instance ===");              instance.cnt.value=1000;           },       onComplete: function(){}     })  }); }

任务三:通过调用静态轨范getSecret获取Secret的值,之后调用实例轨范mySetText来修改文本框的值

function hookChall2(){ Java.perform(function(){     var ChallActivity2=Java.use(com.lab.fridalab.ChallActivity2);     ChallActivity2.isVIP.value=true;     Java.choose(com.lab.fridalab.ChallActivity2,{         onMatch: function(instance){             console.log(=== find ChallActivity2 instance ===);             instance.mySetText(txt);                    },         onComplete: function(){}      })  });}                            

任务四:先点击按钮让欺诈加载外部的dex,摆列类加载器找到加载外部dex的类加载器,缔造Java.classFactory.loader为该类加载器,之后便可使用Java.use获取到外部dex中的类并对函数进行hook,修改复返值为ture即可getflag

 function hookChall2(){ Java.perform(function(){     var ChallActivity2=Java.use("com.lab.fridalab.ChallActivity2");      var txt=ChallActivity2.getSecret();      Java.choose("com.lab.fridalab.ChallActivity2",{          onMatch: function(instance){              console.log("=== find ChallActivity2 instance ===");              instance.mySetText(txt);          },          onComplete: function(){}       })   });}



 
友情链接:

Powered by 黄sei大片全集 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2024