首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 逆向】Android 进程注入工具开发 ( 远程进程注入动态文件操作 | 注入动态 加载 业务动态 | 业务动态启动 | pthread_create 线程开发 )

动态注入工具 使用 ptrace 函数强行向远程进程 注入动态 , 这种方法侵入性极大 , 会破坏远程进程的运行环境 , 因此该动态越简洁越好 ; 注入动态 就执行一个操作 , 就是加载...包含真正的逆向业务逻辑的 libnattive.so 动态 , 然后启动该动态即可 , 执行完毕后 , 马上在远程进程中销毁注入的 libbridge.so 动态 ; 一、加载 libnattive.so...动态 ---- 通过 注入工具 , 将 libbridge.so 注入到远程进程 后 , 远程进程中 , 会 为 libbridge.so 动态分配一块内存 , 并将其运行起来 ; libbridge.so...动态的主要操作是 加载 libnattive.so 动态 , 并执行该动态的 invoke 方法 ; libbridge.so 动态对应的 bridge.c 源码如下 : #include <...---- 在 libnattive.so 动态中 , 不能长时间维持 , 因为 注入工具 还要 获取到远程进程的控制权 , 退出 ptrace 函数调试状态 , detach 解除注入工具对远程进行的附着操作

79220

Android安全-SO动态注入

Android是基于Linux内核的操作系统,而在Linux下SO注入基本是基于调试API函数ptrace实现的,同样Android的SO注入也是基于ptrace函数,要完成注入还需获取root权限。...0x06 调用dlsym函数,获取SO中要执行的函数地址; 0x07 调用要执行的函数; 0x08 恢复目标进程的堆栈,恢复目标进程寄存器值,解除关联,完成SO动态注入...; (注:实际上,0x06和0x07并不属于SO动态注入的步骤,然而仅仅注入是完全没有意义的,通常我们需要执行SO中的函数) 0x3 实现 0x01 获取目标进程的pid,关联目标进程...0x08 恢复目标进程的堆栈,恢复目标进程寄存器值,解除关联,完成SO动态注入: 调用ptrace_writedata(pid, (uint8_t *)saved_regs.ARM_sp...dlopen error\n"); ptrace_getregs(pid, ®s); uint32_t r0 = regs.ARM_r0; DPRINTF("[+2]\t注入动态成功

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入动态注入 | 静态注入两种方式 | 修改动态重打包 | 修改 dataappxxlibs 动态 )

    文章目录 一、注入本质 二、静态注入动态注入 三、静态注入两种方式 ( 修改动态重打包 | 修改 /data/app/packageName/libs/ 下的动态 ) 一、注入本质 ---- 进程注入本质...分析应用结构 | 定位动态位置 | 定位动态中的修改点 | 修改动态 | 重打包 ) 博客 , 修改了 Unity3D 的一个动态的汇编代码指令 , 然后将修改后的动态重打包回 APK 文件中...中的动态注入方式 是 静态注入 , 修改静态的动态文件 ; 使用 ptrace 函数 , 在程序运行后 , 向进程内存中注入 动态 , 动过注入动态 查询 修改内存 , 这种方式是 动态注入...; 三、静态注入两种方式 ( 修改动态重打包 | 修改 /data/app/packageName/libs/ 下的动态 ) ---- 静态修改的两种方式 : 方式一 : 直接修改 APK 中的动态..., 然后进行重打包 ; 方式二 : 如果遇到不能进行重打包 , 还想要静态注入的情况 , 可以修改 /data/app/包名/libs/ 目录下的动态 , 这个动态可以进行修改 ;

    1K20

    linux 动态加载_linux默认动态加载路径

    当我们在linux系统引用动态时,经常会遇到一个问题,加入我们需要的动态没有在系统的默认目录下,我们编译时使用-L指定了动态的路径,编译时没有问题,但是执行调用该动态的可执行文件时,却提示找不到动态...,使用ldd命令查看一下: 为什么我们编译的时候明明指定了动态的路径,而且程序编译的时候没有问题,执行的时候却找不到了呢?...1、因为我们在编译的时候使用-L指定动态的路径,只是告诉编译器我们所需要的动态在某个目录下,只对编译起作用 2、当程序执行时,程序还是回去系统的默认路径下寻找程序运行所需的动态 所以在程序运行的时候会出现找不到动态的问题...解决办法,使用-Wl,-rpath 所需动态的路径 告诉程序如果在默认路径下找不到所需动态,则去当前指定的路径下找动态。...修改gcc编译指令后,结果如下: 可见,动态加载成功,程序运行成功,问题解决。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    11.7K20

    Linux 编译动态_makefile编译动态

    动态链接简介 动态又叫动态链接,是程序运行的时候加载的,当动态链接正确安装后,所有的程序都可以使用动态来运行程序。...动态是目标文件的集合,目标文件在动态中的组织方式是按特殊的方式组织形成的。在动态中函数和变量的地址是相对地址而不是绝对地址,其真实地址在调用动态的程序加载时形成的。...系统中的配置文件/etc/ld.so.conf便是动态链接的搜索路径配置文件。在这个文件内存放着可以被Linux共享的动态链接所在目录的名字(系统默认的/lib, /usr/lib除外)。.../usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/mesa-egl /usr/lib/x86_64-linux-gnu/mesa # Legacy...运行时的动态链接需要放到系统搜索路径下。 6. 动态加载的使用 动态加载动态链接不同的是, 一般的动态链接需要在程序启动的时候就要寻找动态链接,找到库函数。

    6.1K20

    Linux】静态动态

    Linux为什么不允许普通用户给目录建立硬链接呢? 系统层面上有.和…硬链接指向目录。...一、动态和静态 具体的动态和静态的相关内容点击跳转 Linux一般分为动态和静态: 静态(.a):文件以.a为后缀,程序在编译链接的时候把的代码链接到可执行文件中。...程序运行的时候将不再需要静态 动态(.so):文件以.so为后缀,程序在运行的时候才去链接动态的代码,多个程序共享使用的代码。...究竟是动静态,取决你提供的是动态还是静态。...: 静态采用的是绝对编址 动态采用的是相对编址,动态中的指定函数的地址通过相对编址(中的偏移地址+段起始地址): 动态打包:-shared gcc -shared -o libmymath.so

    28830

    Linux】静态动态

    如果我们将头文件和文件都安装到系统中了,-I 和 -L 就不需要带了。 二、动态 1. 动态概念 动态(.so):程序在运行的时候才去链接动态的代码,多个程序共享使用的代码。 2....使用动态 接下来我们按照使用静态的方式尝试使用动态,首先先生成可执行程序: 接下来我们开始运行: 我们会发现,报错了,报的是不能打开该动态,找不到该文件或目录。这是为什么呢?...另外,如果别人给我们的中既包含动态也包含静态,即同一个中提供动静态两种,gcc 默认使用动态!...首先我们要知道,在 Linux 下,形成的可执行程序是 ELF 格式的可执行程序,它其中包含有一张类似于符号表的东西,里面包含各种函数依赖的以及地址,符号表就是动态链接这些动态的。...所以动态采用的就是一种相对编址的方式,然后就可以做到动态中的与位置无关性,所以以前在 gcc 中形成动态需要加上 fPIC,形成与位置无关码。 3.

    54810

    linux动态和静态

    http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/ Linux下静态_的基本概念;如何生成静态动态...,加载时搜索的过程;动态找不到的问题;的依赖问题;动态升级问题与步骤 一、基本概念 1.1、什么是 在 windows 平台和 linux 平台下都大量存在着。       ...1.2、 的种类  linux 下的有两种:静态和共享动态)。...在Linux下,动态和静态同事存在时,gcc/g++的链接程序,默认链接的动态。...linux系统的动态有两种使用方法:运行时动态链接动态加载并在程序控制之下使用。 1、为什么在不停程序的情况下,直接用 cp 命令替换程序使用的 so 文件,会使程序崩溃?

    12.4K20

    Linux共享、静态动态详解

    1、静态函数,是在程序执行前就加入到目标程序中去了 ; 2、动态函数同共享函数是一个东西(在linux上叫共享对象, 文件后缀是.so ,windows上叫动态加载函数, 文件后缀是.dll)...Linux中命名系统中共享的规则 2....大部分这些环境变量的使用的文档都是不全,通常搞得人头昏眼花的,如果要真正弄清楚它们的用法,最好去读loader的源码(也就是gcc的一部分)。...通常,动态函数的符号表里面包含了这些动态的对象的符号。这个选项在创建ELF格式的文件时候,会将所有的符号加入到动态符号表中。可以参考ld的帮助获得更详细的说明。 3.5....一种方法是使用glibc函数中的对动态加载模块的支持,它使用一些潜在的动态加载函数界面使得它们可以夸平台使用。

    8.8K11

    linux 动态 静态_静态库里面包含动态

    动态与静态 文件系统补完 文件的三个时间acm 动态与静态 动态链接与静态链接 静态动态 动静态的对比 生成静态 打包静态 使用静态 生成动态 打包动态 使用动态 文件系统补完...可以使用:1.,包括静态动态。2.开源代码。3.基本的网络功能调用,比如各种网络接口、语音识别等等。 这其中,我们将详细介绍静态动态。...动态动态链接生成的,而静态是静态链接生成的。...程序运行的时候将不再需要静态。 而动态则是指程序在运行的时候才去链接动态的代码,多个程序共享使用的代码。...生成动态 学习完生成和使用静态后,下面我们来生成一下动态

    7.4K20

    Linux静态动态加载

    ,简单来说就是动态。...在Linux当中,以.so为后缀的是动态,以.a为后缀的是静态。 在Windows当中,以.dll为后缀的是动态,以.lib为后缀的是静态。 认识了动态,那静态,又是什么呢?...,不再需要,但动态不行,在日常我们都会使用动态,很少使用静态。...注意上面我打包了两个,虽然看后缀一个静态,一个动态,但是其实上述的都是静态linux不是单单通过后缀来判断一个的类型,下面就来看看如何真正打包一个动态吧。...打包:使用-shared选项将所有目标文件打包为动态 与生成静态不同的是,生成动态时我们不必使用ar命令,我们只需使用gcc的-shared选项即可。

    15910

    Linux动态和静态

    前言 一、动态和静态概念 在之前的文章中,介绍过动静态的概念,因此这次我们只是简单回顾一下。 Linux中的分为动态和静态。...动态(.so):文件以.so为后缀,程序在运行时才去链接动态的代码(运行时跳转到动态中,在动态中执行库函数)。多个程序共享的代码。 链接的本质:我们调用库函数时是如何与标准联系的。...二、 我们了解了动态和静态的相关概念,但是我们还是不理解库是个什么东西。 假设,我们做了一个小程序,只希望提供给用户小程序的功能,不希望暴露我们的源码。...总结 以上就是今天要讲的内容,本文介绍了Linux中的动静态的相关概念。...本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

    45020

    Go标准plugin源码分析----动态使用

    但还有些场景,如需要以插件形式加载,方便动态更新,热重启等情况。这些场景的需求,就带来了plugin动态加载。 那么先看看plguin这个的文档。文档为1.10版本 ?...(后面的源码分析中会分析) 注意: 1、plugin只init一次,并且不能closed。 2、目前只实现了linux平台和macos平台 ?...文件很少,就只有两个(其实源码里有三个文件) 只提供了两个接口 Open:加载so文件 Lookup:查找对应符号(包括func,var等) 文档中的示例 ?...两个接口的使用,Open加载文件,Lookup查找符号 示例中,有一个var,有一个func 那么再看下例子 ? 这个里面多了一个init 使用 ? 好了,下面看源码 源码目录 ?...这个是linux种标准的动态链接加载接口。 当然plugin只实现了封装了dlopen,dlsym,两个函数。这个和文档中所提供的接口和描述是符合的。 只提供了加载,并没有提供关闭。 继续看源码 ?

    1.2K30

    Linux下的静态动态

    1.什么是 在windows平台和linux平台下都大量存在着。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。...由于windows和linux的本质不同,因此二者的二进制是不兼容的。本文仅限于介绍linux下的。 2.的种类 linux下的有两种:静态和共享动态)。...动态的后缀是.so,它由gcc加特定参数编译产生。...在linux下,文件一般放在/usr/lib /lib下, 静态的名字一般为libxxxx.a,其中xxxx是该lib的名称 动态的名字一般为libxxxx.so.major.minor,xxxx...和ld-linux 7.可执行程序在执行的时候如何定位共享文件 当系统加载可执行代码时候,能够知道其所依赖的的名字,但是还需要知道绝对路径 此时就需要系统动态载入器(dynamic linker

    8510

    linux编译curl动态so

    在windows下还是很容易使用,如何使用的案例比比皆是,而且很容易就找到已经编译好的动态进行测试,但是最后在linux下部署的时候,发现不好找已经编译好的so文件,最后没办法只好自理更生。...首先是准备源码文件,可以到官网(http://curl.haxx.se/download.html)下载,也可以去其它地方下载,最新版本是curl-7.39.0.tar.gz。...我是使用腾讯的SDK里面附带的curl源码(ps,腾讯SDK的示例代码貌似没在linux测试过,我编译后使用他们的代码,发现很容易崩溃,需要修改才能运行,但是windows正常)。...然后,对下载的源码解压,然后进入解压后的目录,然后配置编译选项,然后编译。 # ....包含了编译生产的、头文件等。 然后为了能够方便的移植我们的程序,把include/lib下面的头文件和so文件拷贝到自己的工程目录就能使用curl了。

    6.4K10

    一个静态注入动态的工具: luject

    luject是一个静态注入动态的工具,它可以实现对mac, ios, linux, windows的可执行程序,动态程序进行修改,来插入指定动态实现注入和加载。...另外luject也实现了对ios的ipa包,android的apk包自己macOS的.app包的动态注入,重打包和重签名支持。...注入技术简介 我们可以通过ptrace附加或启动一个程序,然后将指定的动态注入进去,但很多情况下需要root权限才行。...除了通过动态注入,我们也可以通过设置DYLD_INSERT_LIBRARIES等环境变量的方式,来注入指定的动态,mac/ios程序就可以使用这种方式来简单快速地实现注入,例如: $DYLD_INSERT_LIBRARIES...这里luject就是利用了这个,通过修改可执行文件,插入动态加载路径,来实现静态注入,例如: auto elf_binary = std::unique_ptr

    1.5K10

    Linux动态管理详解:增加动态目录和实用技巧

    引言 在Linux操作系统中,动态是一种特殊的二进制文件,它包含了在多个应用程序中可共享的代码和数据。然而,对于开发者和系统管理员来说,管理这些动态可能并不是一件简单的事。...本文将深入探讨Linux动态的管理,包括如何增加动态目录,以及一些与动态相关的实用技巧。 动态简介 在深入讨论之前,让我们先了解一下什么是动态。...允许多个程序共享同一份代码。 增加动态目录 Linux系统通常在/lib,/usr/lib或/usr/local/lib等几个标准目录中查找动态。但有时,我们可能需要在其他目录中存放动态。...通过ldconfig命令 ldconfig命令是Linux系统中用于管理动态链接的工具。通过执行ldconfig -v,你不仅可以刷新动态链接缓存,还可以看到系统中所有动态目录和其中的。...增加动态目录和了解一些实用技巧,不仅可以让你更灵活地管理系统,还能解决一些常见的依赖问题。希望本文能帮助你更深入地理解Linux动态的管理。

    1.6K41
    领券