资源简介
资源有两部分代码1. 注入的so 测试文件代码 2. 将so 文件注入的代码
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ENABLE_DEBUG 1
#define PTRACE_PEEKTEXT 1
#define PTRACE_POKETEXT 4
#define PTRACE_ATTACH 16
#define PTRACE_CONT 7
#define PTRACE_DETACH 17
#define PTRACE_SYSCALL 24
#define CPSR_T_MASK ( 1u << 5 )
#define MAX_PATH 0x100
#define REMOTE_ADDR(addr local_base remote_base) ( (uint32_t)(addr) + (uint32_t)(remote_base) - (uint32_t)(local_base) )
const char *libc_path = “/system/lib/libc.so“;
const char *linker_path = “/system/bin/linker“;
#define LOG_TAG “DEBUG“
#define LOGD(fmt args...) __android_log_print(ANDROID_LOG_DEBUG LOG_TAG fmt ##args)
#if ENABLE_DEBUG
#define DEBUG_PRINT(format args...) \
printf(format ##args)
#else
#define DEBUG_PRINT(formatargs...)
#endif
int ptrace_readdata(pid_t pid uint8_t *src uint8_t *buf size_t size) {
uint32_t i j remain;
uint8_t *laddr;
union u {
long val;
char chars[sizeof(long)];
} d;
j = size / 4;
remain = size % 4;
laddr = buf;
for (i = 0; i < j; i++) {
d.val = ptrace(PTRACE_PEEKTEXT pid src 0);
memcpy(laddr d.chars 4);
src += 4;
laddr += 4;
}
if (remain > 0) {
d.val = ptrace(PTRACE_PEEKTEXT pid src 0);
memcpy(laddr d.chars remain);
}
return 0;
}
int ptrace_writedata(pid_t pid uint8_t *dest uint8_t *data size_t size) {
uint32_t i j remain;
uint8_t *laddr;
union u {
long val;
char chars[sizeof(long)];
} d;
j = size / 4;
remain = size % 4;
laddr = data;
for (i = 0; i < j; i++) {
memcpy(d.chars laddr 4);
ptrace(PTRACE_POKETEXT pid dest d.val);
dest += 4;
laddr += 4;
}
if (remain > 0) {
d.val = ptrace(PTRACE_PEEKTEXT pid dest 0);
for (i = 0; i < remain; i++) {
d.chars[i] = *laddr++;
}
ptrace(PTRACE_POKETEXT pid dest d.val);
}
return 0;
}
int ptrace_writestring(pid_t pid uint8_t *dest char *str) {
return ptrace_writedata(pid dest str strlen(str) + 1);
}
int ptrace_call(pid_t pid uint32_t addr long *params uint32_t num_params struct pt_regs *regs) {
uint32_t i;
for (i = 0; i < num_params && i < 4; i++) {
regs->uregs[i] = params[i];
}
//
// push remained params onto stack
//
if (i < num_params) {
regs->ARM_sp -= (num_params - i) * sizeof(long);
ptrace_writedata(pid (void *) regs->ARM_sp (uint8_t *) ¶ms[i]
(num_params - i) * sizeof(long));
}
regs->ARM_pc =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 407 2018-09-18 09:27 demo\将so文件注入的代码\jni\Android.mk
文件 68 2018-09-17 17:53 demo\将so文件注入的代码\jni\Application.mk
文件 11937 2018-10-13 09:42 demo\将so文件注入的代码\jni\inject.c
文件 468 2018-09-19 10:12 demo\将so文件注入的代码\jni\inject.h
文件 1243 2011-09-08 15:43 demo\将so文件注入的代码\jni\shellcode.s
文件 399 2018-09-18 10:10 demo\注入的so的代码\jni\Android.mk
文件 68 2018-09-17 17:53 demo\注入的so的代码\jni\Application.mk
文件 451 2018-09-19 16:14 demo\注入的so的代码\jni\payload.c
目录 0 2018-09-19 17:11 demo\将so文件注入的代码\jni
目录 0 2018-09-19 17:12 demo\注入的so的代码\jni
目录 0 2018-09-19 17:11 demo\将so文件注入的代码
目录 0 2018-09-19 17:12 demo\注入的so的代码
目录 0 2018-10-13 09:41 demo
----------- --------- ---------- ----- ----
15041 13
- 上一篇:java实现的计算器界面程序
- 下一篇:JDK8u201全版本包含jre
相关资源
- nineoldandroids-2.4.0.jar.zip
- Android CoordinatorLayout打造酷炫的顶部栏
- android自定义混淆字典
- android完美电影购票源码
- Android应用案例-《垃圾短信助手案例
- Android 自定义漂亮吐司
- SQlite Android SQLite的应用 简易的学生成
- android人脸识别测试用例
- 百度地图 BaiduLBS_Android.jar
- android studio 编译aidl以及demo
- Android SwitchButton开关
- android ChiceScanGun.rar
- Android Flowlayout:LinearLayout内部控件自动
- android-support-design.jar包 程序文件
- 基于Android平台校园信息发布系统
- android屏幕监视器
- Android 倒计时程序源码
- android.support.design.jar-24.2.1jar、doc、s
- android源代码 蓝牙串口助手
- 我的Android进阶之旅------>Android疯狂连
- Qt仿Android的toast控件效果
- Qt + adb 实现的PC端Android文件管理软件
- Android 图片加图片logo水印文字水印
- android 转圈等待动画
- Android崩溃页面
- Android自定义锁屏实现----仿正点闹钟滑
- Android中获取正在运行的应用程序Act
- Android 心电图
- android平台联系人管理应用源码+项目项
- dtmf decoder Android rar
评论
共有 条评论