能力值:
( LV3,RANK:20 )
|
-
-
2 楼
感谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
期待实战,怎么定位frida检测和xp检测,现在xp选择加固APP就崩溃了????,frida这是。这种是怎么做检测定位的呢
|
能力值:
( LV12,RANK:220 )
|
-
-
4 楼
你瞒我瞒
期待实战,怎么定位frida检测和xp检测,现在xp选择加固APP就崩溃了????,frida这是。这种是怎么做检测定位的呢
这些都被厂商特征了,具体检测方法看雪上有,如何定位以及如何用此插件pass我到时候都会讲一下,要做的比较多,会尽快开始。
|
能力值:
( LV1,RANK:0 )
|
-
-
5 楼
感谢分享,学习了
|
能力值:
( LV1,RANK:0 )
|
-
-
6 楼
通过内核模块注入可行吗
|
能力值:
( LV12,RANK:220 )
|
-
-
7 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
感谢分享
|
能力值:
( LV7,RANK:110 )
|
-
-
9 楼
我以前都是用riru做注入 最近也写了一个zygisk的注入 代码思路基本和你一样 tmp目录放了一个txt 判断要注入的app 以及注入的so名称 1.直接调dlopen // 指定要注入的 SO 文件路径
/* const char* so_path = "/data/data/com.test.xxxxxxx/files/libxxx.so";
// const char* so_path = "/data/local/tmp/libxxx.so";
// 使用 dlopen 尝试加载 SO 文件
void *handle = dlopen(so_path, RTLD_NOW); //RTLD_NOW:将库文件中所有的资源都载入内存 RTLD_LAZY:暂时不将库文件中的资源载入内存,使用时才载入。
if (handle) {
LOGD("RTLD_LAZY 成功注入 SO 文件: %s", so_path);
// 查找并调用 JNI_OnLoad
typedef jint (*JNI_OnLoad_t)(JavaVM*, void*);
JNI_OnLoad_t JNI_OnLoad = (JNI_OnLoad_t) dlsym(handle, "JNI_OnLoad");
if (JNI_OnLoad) {
JNI_OnLoad(javaVM, nullptr);
LOGD("成功调用 JNI_OnLoad");
} else {
LOGD("未找到 JNI_OnLoad 函数");
}
} else {
LOGD("注入 SO 文件失败: %s", dlerror());
}*/2.调用load void injectSO(JNIEnv *env) {
// 获取 System 类
jclass systemClass = env->FindClass("java/lang/System");
// 获取 load 方法 ID
jmethodID loadMethod = env->GetStaticMethodID(systemClass, "load", "(Ljava/lang/String;)V");
jstring jSoPath = env->NewStringUTF(so_path.c_str());// 注入 SO 文件路径
// 调用 System.load 方法注入 SO 文件
env->CallStaticVoidMethod(systemClass, loadMethod, jSoPath);
// 检查是否有异常发生
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
LOGD("注入失败: %s - System.load", dlerror()); // 使用 dlerror() 获取详细错误信息
} else {
LOGD("注入成功 called System.load");
}
env->DeleteLocalRef(jSoPath); // 释放 jstring 对象
}
|
能力值:
( LV12,RANK:220 )
|
-
-
10 楼
世界美景
我以前都是用riru做注入 最近也写了一个zygisk的注入 代码思路基本和你一样 tmp目录放了一个txt 判断要注入的app 以及注入的so名称&n ...
我打算后面要做隐藏注入和自定义linker注入,感兴趣可以加个联系方式,一起开发一下
最后于 2024-10-8 12:02
被棕熊编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
发个联系方式
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
学习了
|
能力值:
( LV6,RANK:90 )
|
-
-
13 楼
师傅能不能请教一下,我用zygisk注入在postAppSpecialize不开线程直接掉dlopen注入so过几秒会闪退,用ptrace注入同一个so不会闪退是为啥
|
能力值:
( LV12,RANK:220 )
|
-
-
14 楼
mb_fycbgpri
师傅能不能请教一下,我用zygisk注入在postAppSpecialize不开线程直接掉dlopen注入so过几秒会闪退,用ptrace注入同一个so不会闪退是为啥
发一下样本,我去看看
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
zygisk注入核心原理之前是改ld_preload,现在好像又成了改nativebridge了。注入方式还有通过修改memmap形式注入的,这个目前我没发现有进程注入不了。
|
能力值:
( LV6,RANK:90 )
|
-
-
16 楼
void postAppSpecialize(const AppSpecializeArgs *args) override { if (enable_hack) { LOGD("[postAppSpecialize]current PID=%d --- Start Hacking!\n", getpid()); LOGD("[+] start inject"); void *handle = dlopen("/data/data/com.xxxxxx.xxxxxx/files/libxxxx.so", RTLD_NOW | RTLD_LOCAL); // 加载你要注入的so if (handle == nullptr) LOGD("%s\n", dlerror()); // void *run_hack=nullptr; // run_hack=(RUN_HACK)dlsym(handle,"run_hack");//找到你的so中的某个函数 // if (run_hack==nullptr) LOGE("%s\n",dlerror()); // run_hack();//执行功能 } }而且如果注入so,libxxxx.so的attribute里什么都不做的话就不会闪退,libxxxx.so里只有有操作就会闪退
|
能力值:
( LV12,RANK:220 )
|
-
-
17 楼
mb_fycbgpri
void postAppSpecialize(const AppSpecializeArgs *args) override
{
if (enable_hack)
...
方便发一下apk链接吗,我看看解决下
|
能力值:
( LV11,RANK:185 )
|
-
-
18 楼
额,你这个方向目前来看,对抗性上属于死路,因为有些开源项目本身带来的对抗性问题没法解决。
|
能力值:
( LV1,RANK:0 )
|
-
-
19 楼
内核方式据说会被crc校验查看关键函数被插入中断指令
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
为什么他们都集体消失了,
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
学习了
|
能力值:
( LV1,RANK:0 )
|
-
-
23 楼
感谢分享,学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
何不考虑基于ptrace直接字符串源码注入
|
|
|