frida学习(process,module,memory) && android开发学习(结构,kotlin)(二)

FRIDA输出打印

console.log()
console.warn()
console.error()

console之hexdump

打印内存中的地址
target参数可以是ArrayBuffer或者NativePointer,而options参数则是自定义输出格式可以填这几个参数offset、lengt、header、ansi

var libc = Module.findBaseAddress('libc.so');
console.log(hexdump(libc, {
   
   
  offset: 0,
  length: 64,
  header: true,
  ansi: true
}));
           0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
00000000  7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010  03 00 28 00 01 00 00 00 00 00 00 00 34 00 00 00  ..(.........4...
00000020  34 a8 04 00 00 00 00 05 34 00 20 00 08 00 28 00  4.......4. ...(.
00000030  1e 00 1d 00 06 00 00 00 34 00 00 00 34 00 00 00  ........4...4...

send(终于知道send是干什么的了)

nd是在python层定义的on_message回调函数,jscode内所有的信息都被监控script.on(‘message’, on_message),当输出信息的时候on_message函数会拿到其数据再通过format转换, 其最重要的功能也是最核心的是能够直接将数据以json格式输出,当然数据是二进制的时候也依然是可以使用send

process 对象

Process.id:返回附加目标进程的PID
Process.isDebuggerAttached():检测当前是否对目标程序已经附加
Process.enumerateModules()会枚举当前所有已加载的so模块,并且返回了数组Module对象

function frida_Process() {
   
   
    Java.perform(function () {
   
   
        var process_Obj_Module_Arr = Process.enumerateModules();
        for(var i = 0; i < process_Obj_Module_Arr.length; i++) {
   
   
            console.log("",process_Obj_Module_Arr[i].name);
        }
    });
}
setImmediate(frida_Process,0);

Process.enumerateThreads():枚举当前所有的线程,返回包含以下属性的对象数组:id.state,context
Process.getCurrentThreadId():获取此线程的操作系统特定 ID 作为数字(感觉没用)

module对象

Process.EnumererateModules()方法返回了就是一个Module对象
Module对象的属性
1 name 模块名称
2 base 模块地址,其变量类型为NativePointer
3 size 大小
4 path 完整文件系统路径

Module.load() //加载指定so文件,返回一个Module对象
function frida_module(){
   
   
Java.
  const hook = Module.load("libhello.so");
  console.log("模块名称:",hook.name);
  console.log("模块地址:",hook.base);
  console.log("模块大小:",hook.size);
  console.log("路径:",hook.path);
}	
Process.EnumererateModules() 
function frida_Module(){
   
   
   Java.perform(function(){
   
   
           var process_Obj_Module_Arr = Process.enumerateModules();
           for(var i = 0; i < process_Obj_Module_Arr.length; ++i)
           {
   
   
              if(process_Obj_Module_Arr[i].path.indexOf("hello") != -1)
              {
   
   
                         console.log("模块名称:",process_Obj_Module_Arr[i].name);
                         console.log("模块地址:",process_Obj_Module_Arr[i].base);
                         console.<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值