frida由浅入深系列一:简单cpp函数

frida由浅入深系列一:简单cpp函数

Android小彩虹2021-07-10 5:32:48450A+A-

由于工作一直会遇到frida来执行各种Hook,现在梳理整个frida的相关使用场景。由于安装的资料以及文档网上已经特别多了,本系列教程忽略相关安装步骤。

编写C++函数

#include <iostream>
#include <string>

extern "C" {
  void* create_stdstr(char *data, int size) {
    std::string* s = new std::string();
    (*s).assign(data, size);		  
    return s;
  }
}

此函数简单的输出字符串的前n个值。比如:“abcd,3”即输出为“abc”。

生成可执行文件

通过ndk的clang生成可执行文件

C:\Users\g\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\aarch64-linux-android21-clang++ a.cpp -o a -shared -static-libstdc++

文件移动到手机内

将文件push到手机内执行frida

adb push a /data/local/tmp

frida调用

由于frida启动需要绑定一个进程,我们可以直接运行任意一个app来挂起firda。

当遇到上面的错误时,需要设置SELinux模式为permissive。

这里我们简单介绍一下SELinux的三种模式:

  • enforcing:强制模式,表示SELinux 运行中,且已经正确的开始限制 domain/type
  • permissive:宽容模式,表示SELinux 运行中,不过仅会有警告信息,并不会实际限制 domain/type 的存取
  • disabled:关闭,SELinux 没有运行

这里再多说一点,Android的硬件检测的两种方案之一就是通过SELinux来获取,另外一个就是证书链认证,请参考以前写的文章。 然后继续执行上述命令。

现在可以直观的看到frida调用c++方法调用成功。

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们