frida so hook 未导出的函数

先分析encode。


发现是一个导出函数。

ida找它,如图所示。

查看引用,找到调用它的函数。

获取它在文件中的偏移,如图所示。

hook 地址时记得加1。

# -*- coding: UTF-8 -*-
import frida, sys

jsCode = """

Java.perform(function(){

    var soAddr = Module.findBaseAddress("libhello.so");
    send(‘soAddr: ‘ + soAddr);
    var MD5FinalAddr = soAddr.add(0x1768 + 1);
    send(‘MD5FinalAddr: ‘ + MD5FinalAddr);
    Interceptor.attach(MD5FinalAddr, {
        onEnter: function(args){
            send(args[0]);
            send(args[1]);
        },
        onLeave: function(retval){
            send(retval);
        }
    });

});

""";

def message(message, data):
    if message["type"] == ‘send‘:
        print(u"[*] {0}".format(message[‘payload‘]))
    else:
        print(message)

process = frida.get_remote_device().attach("com.xiaojianbang.app")
script= process.create_script(jsCode)
script.on("message", message)
script.load()
sys.stdin.read()

原文地址:https://blog.51cto.com/haidragon/2397709

时间: 2024-07-31 10:26:04

frida so hook 未导出的函数的相关文章

【Ecstore2.0】导出问题解决(未导出或导出文件为0字节)

如果导出队列能成功执行(队列不执行看这里)但是并未生成文件,那么原因大部份可能是出在FTP上. ECSTORE2.0采用了PHP的FTP模块,所以先确认你的环境是否安装了FTP模块,如果没有,安装并在PHP.INI中配置好模组路径. 功能文件:\app\importexport\lib\policy\ftp.php ,程序中使用 ftp_nb_put() 异步上传,这里告诉大家一个调试方法:在适当的位置加入 logger::info('debug info'); 然后查看 /data/logs/

golang json处理struct未导出成员

我们用golang的json来marshal一个结构体的时候,结构体的未导出的成员将无法被json访问,也就是不会出现json编码的结果里(也就是小写的成员没法导出) 这个是由于技术的上问题引起的:golang的结构体里的成员的名字如果以小写字母开头,那么其他的包是无法访问的,也就是json无法访问我们的结构体里小写字母开头的成员 这个可以有两种方法解决 1. struct的成员用大写开头,然后加tag 2. 实现json.Marshaler接口 第一种方法比较常见这儿就不详细展开了 第二种方法

jQuery清除、停止队列中剩下(未执行的函数)

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>jQuery清除.停止队列中剩下(未执行的函数)</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <scrip

非分离线程未使用join函数例子:

//非分离线程未使用join函数例子: #include<stdlib.h> #include<pthread.h> #include<stdio.h> #include<sched.h> #include<errno.h> void*consumer(void*p) { static a=0 ; a++; printf("<<<<<<<<<<<<<<&

Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)

Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作的博客,里面介绍了Dependency Walker这个小工具.但是实际操作起来并不理想,因为Dependency Walker将exe文件依赖的所有动态库以及动态库所依赖的动态库都列出来了.看得你一脸懵逼: 你很难分清楚:倒底哪些DLL是需要打包的,哪些DLL是系统自带的.而作为打包过程中的一个小步骤,我根

动态链接库中导出模板函数

动态链接库中导出模板函数 C++ 支持函数模板,利用函数模板,可以简化我们的程序代码.我在自己的代码中也经常用到函数模板,但是以前一直以为函数模板是要放到头文件中的,否则调用模板函数时,编译器会找不到函数模板的定义.今天闲暇,又翻了翻 C++ Primer,发现我以前的理解是有问题的.模板函数也可以像普通函数那样,将声明放在头文件中,定义放在.cpp 中.这时又想到另一个问题,DLL 中是否可以导出模板函数呢.如果可以的话,就可以将函数的实现代码真正隐藏起来了.经过一番实验,发现是可以的,但是有

获取Linux内核未导出符号的几种方式

从Linux内核的2.6某个版本开始,内核引入了导出符号的机制.只有在内核中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL导出的符号才能在内核模块中直接使用.然而,内核并没有导出所有的符号.例如,在3.8.0的内核中,do_page_fault就没有被导出. 而我的内核模块中需要使用do_page_fault,那么有那些方法呢?这些方法分别有什么优劣呢? 下面以do_page_fault为例,一一进行分析: 修改内核,添加EXPORT_SYMBOL(do_page_fault

导出的函数无法导入

#ifdef GLOBE_20150806 #define GLOBE_EXPIMP __declspec(dllexport) #else #define GLOBE_EXPIMP __declspec(dllimport) #endif GLOBE_EXPIMP extern std::string WideCharToMultiChar(std::wstring str);//宽字符转多字符 banlv error LNK2019: 无法解析的外部符号 "__declspec(dllimp

枚举导出的函数

//枚举导出的函数 // #include <idc.idc> static main() { auto entrypoints,i,ord,addr,name,purged,file,fd; file = AskFile(1,"*.idt","Select IDT save file"); //打开文件对话框 fd = fopen(file,"w"); //以写的方式打开 entrypoints = GetEntryPointQty