• 2024-08-23dlopen 加载使用了std::thread 的so 导致crash的问题分析
    c++11的的createimplement是在thread.cc中实现的,这意味着创建代码在libstdc++.so中,创建代码需要使用与平台有关的apigcc(g++isapartofgcc)的预期:没有调用的thread的代码,不会产生对pthread的依赖,更重要的,不同配置的gcc的线程模型是不同的,依赖库也不同(即不一定是pthrea
  • 2024-08-19frida hook的一些东西记录
    https://bbs.kanxue.com/thread-265160-1.htmhttps://bbs.kanxue.com/thread-281761-1.htm针对以上代码文档,没有做验证,后续需要验证,先记录下目前遇到的一些app的检测方法基本都是通过某个so衍生的pthread_create线程,来检测frida,基本上名字都是:libmsaoaidsec.so一种很明了的是,a
  • 2024-08-04c动态加载c/c++ so并调用其中的函数或者子类实现
    在不少服务器应用中,会采用插件化或者模块化的体系实现具体的业务功能,比如mysql支持插件化体系,nginx采用模块化体系。总得来说,很多时候,因为扩展性,系统会采用动态加载so的方式扩展业务功能,而主框架不需要每次新增功能就不得不重新编译,很多时候,对于二进制发行的应用来说,不可能这
  • 2024-04-09静态库与动态库
    静态库静态库的本质时将多个目标文件打包成一个文件,而链接静态库就是将库中被调用的代码复制到调用模块中,拓展名为.a举例:calc.h//计算模块头文件#ifndef_CALC_H_#define_CALC_H_intadd(inta,intb);intsub(inta,intb);#endif//_CALC_H_calc.c#include"c
  • 2024-02-27【APP逆向16】frida反调试
    1.当我们对莫个app进行fridahook的时候,如果已启动hook脚本,app就自动退出了。这个时候可能就是app对frida进行了反调试。2.如何解决这种问题呢?反调试一般在so中实现,如果有frida使用,就给关闭app启动过程中,都有加载so文件下面的问题是如何找到反调试的so文件3.hookapp
  • 2023-11-04hook_so
    在对应的so加载后再执行hook代码//刚注入的时候这个so还没加载,需要hookdlopenfunctioninline_hook(){varbase_hello_jni=Module.findBaseAddress("libxxxx.so");console.log("base_hello_jni:",base_hello_jni);if(base_hello_jni){console.lo
  • 2023-08-29python加载so库
    fromctypesimportCDLL,RTLD_GLOBALfrom..ankeimportcurrentOSclassLoadSo:def__init__(self,soPath,args):ifcurrentOS!='darwin':forarginargs:"""1、麒麟、UOS环境循环
  • 2023-07-21链接参数export dynamic和-rdynamic的使用
    存在程序main通过dlopen使用libA中的符号:main.c:1#include<stdio.h> 2#include<dlfcn.h> 3  4typedefvoid(*func)(void);  5  6  7voidtest_main() 8{ 9  return;10}11 12 13intmain()14{15  void*handle=dlopen("./libA.so",RTLD_N
  • 2023-06-26四期day36 打包和其他
    day36打包和其他今日概要:exe打包离线包其他分享1.exe打包pipinstallpyinstaller注意事项:支持mac、win(windows建议使用python3.6.8)。配合虚拟环境打包。-项目crm-环境crm -python.exe -Scripts -pip.exe -pyinstaller.exe -Lib -site-packag
  • 2023-06-08Linux dlopen系列函数
    Linux提供了一套API来动态装载库,编译时候要加入-ldl(指定dl库) dlopen()函数函数定义#include<dlfcn.h>void*dlopen(constchar*filename,intflag);描述dlopen()用于加载以\0结尾的字符串文件名命名的动态共享对象(或叫动态链接库),返回一个不透明的句柄,此句柄
  • 2023-05-04Linux下如何找到程序中是否有dlopen的库
    嵌入式系统开发下,有时候要对库进行一些处理.比如这个库没有被用到就可以被移除,但是一般情况下没有去判断dlopen的库信息,所以会造成误删除的情况.这个bash脚本用来搜索指定目录或指定文件是否有使用dlopen的库及可执行文件.注意:该脚本因为是通过对二进制文件的分析实
  • 2023-05-01dlopen参数flag的使用
    参考:https://blog.csdn.net/Bluenapa/article/details/119205993使用dlopen接口动态加载共享库,函数原型如下void*dlopen(constchar*pathname,intmode)其第一个参数是包含so名称的路径,可以是相对路径;第二个参数mode是选项配置,可以结合实际场景需求配置,接下来认
  • 2023-02-23动态加载
    1、dlopen#include<dlfcn.h>void*dlopen(constchar*filename,intflags);功能:将动态库加载到内存。参数:filename:共享库路径。如果只给定文件的名字。按照动态链接器的
  • 2023-02-07自实现linker加固so遇到的问题记录
    自定义linker加固so是主流的加壳方式,通过实现linker程序来加载,链接加固后的so文件。最后为了让加固后的so中的代码能与其他模块交互,需要修正壳(自定义linker)的soinfo为加固s
  • 2022-12-19项目升级到Android31版本dlopen找不到系统so库文件
    简介最近有个海外项目需要把之前项目从30版本升级到31版本,升级后发现就发现一个问题:因为我们的项目是系统签名的apk,所以集成到系统中后是没有任何问题的,但是当我们手动安
  • 2022-12-05linux下动态链接库(.so)的显式调用和隐式调用
    linux下动态链接库(.so)的显式调用和隐式调用2021-12-21进入主题前,先看看两点预备知识。一、显式调用和隐式调用的区别      我们知道,动态库相比静态库的区