fettdrac

Results 9 comments of fettdrac

所以应该先用AKSetCacheDirectory设置CACHE_DIR吗 UPDATE:问题解决了,谢谢dalao

能否提供个复现apk? 或者hook哪个函数

> 你好, 想请教怎么操作? 只要把java目录下的文件复制到自己的app的java 目录下 运行就可以了吗? 因为是全局注入,复杂些,但每一步基本没坑(在AVD和我自己的三星真机上没毛病),如果想要简单一些(避免写system分区,而且可以实现自动部署,"武器化"的话可以直接ptrace注入so那套操作(参考libinject,注意selinux)) 1、先编译整个项目(推荐AS环境),得到libwhale.so和包含有'com.lody.whale.WhaleRuntime'类的dex(app模块下有多个dex,用jadx-gui反编译找出包含的那个,重命名whale.dex复制到/data/local/tmp下) -----静态注入操作 begin ,更稳定,但需要/system写权限,动态ptrace注入可以省略----- 2、用[https://bbs.pediy.com/thread-224297.htm]的工具改app_process,工具输出会告诉你应该把libwhale.so改成什么名字(也可以用readelf -d看第一个so,具体操作详见链接) 3、把修改好的app_process(我这里是app_process32)替换原先的(注意备份!),运行'app_process -Xzygote /system/bin --zygote --start-system-server'看下是不是缺少一个依赖(我这里是dl.so,有时是android_runtime.so)缺少依赖说明修改基本ok 4、把重命名好的libwhale.so复制到/system/lib下(文件名一定要对!) -----end----- 5、将写好的hook模块(hmtest是实例)复制到/data/local/tmp下,重命名为HMTest.dex(目前路径写死,可以实现动态查找,但没必要(滑稽),因为一个dex里可以有多个模块),重启java世界,就可以全局hook了,修改模块的话重启生效 6、算是彩蛋功能,ZygoteHook类的代码会在JNI_OnCreateJVM后就执行,几乎完整的root权限执行任意代码(patch SELinux之类的可以参考KSMA里的那段shellcode,也可以在这里等待mediaserver混进secure world让RKP保护为我们所用(完整任意地址读写~)),里面默认实现一个hook forkAndSpecialize的代码,可以给任意app高危权限(比如以system身份运行,可以混进系统签名的应用里拿到一些OEM权限和数据,前排@某为,某米,三颗星(滑稽)) 如果只是在自己app内hook,就是添加libwhale.so,然后把whale_wrapper模块里的类都复制进来就ok了(参考asLody大佬的README),Xposed-Style hook,教程网上一堆 '我提这PR主要是想到动态加载dex和用Object.clone和Object.internalClone获取ArtMethod结构体偏移的方法',灵活性更好.,全局注入那块没想过被merge。 全局注入这块EdXposed比我写的好,代码也更优化些,我主要是拿whale框架学习art hook,顺便隐蔽性比较好,没啥UI交互,直接搞个root...

> patch SELinux之类的可以参考KSMA里的那段shellcode,也可以在这里等待mediaserver混进secure world让RKP保护为我们所用(完整任意地址读写~) > > 这块代码在哪里呢 这块只是理论上可行,三星的一个洞里有关于通过RKP写内核内存的利用方法,但是我这边实际没有实现(个人水平实在非常有限),只是看过相关利用。 有个从0到TrustZone系列,讲的挺不错,链接:https://www.freebuf.com/articles/system/103152.html。 其实不应该提那块的,让你费时去找了,sorry! 大多数情况个人用户用不到DRM,不用去考虑TrustZone那块,KSMA patch SELinux的话:https://github.com/jltxgcy/CVE_2017_7533_EXP 这个里面有完整的一套代码,关注 static unsigned long get_fack_block(unsigned long phys_addr)和 static patch_syscall(unsigned long mirror_kaddr) 这两个函数,root权限下往内核空间写点东西办法很多

就是xposed style hook,喜欢jni style可以把BuildJniCloseure生成的跳板换成自己的hook代码,通过返回slot调用invokeOriginMethod调原函数就可以了 系统api的话注入system_server通过context拿到systemservice类就可以hook了 java binder hook没必要用whale,还是直接勾systemservice简单些,省去binder那一大套实现 说的不对欢迎dalao指正

> 怎么hook第三方app的代码? so注入,加载dex,dex里加载libwhale.so,照常hook 没root权限的话静态修改,反编译,smali合并,签名验证什么的就要自己分析了 也可以用dalao的VA框架,改改就可以集成whale了

这个的hook方式跟你写Xposed模块是几乎一样的(it is similar to the way in which you are writing the Xposed module) 这里给个常用的实例方法整体替换示例,如果喜欢用XposedHelpers类也可以 ``` public void hookMethod(Method oldMethod, final Method newMethod) { XposedBridge.hookMethod(oldMethod, new XC_MethodReplacement() { @Override protected...

Whale的WInlineHook调用原过程基本会崩溃,老bug了,可能是恢复现场那段shellcode写的有问题,不会汇编也咱也没法修,我都是下源码加个Cyida Hook库替换着凑合用的(Android)

导入whale.h,调用里面的WInlineHookFunction函数即可实现inline hook,不过如果在回调中调用原函数会崩溃,段错误(x86 armv7),如果只是简单的MethodReplacement的话稳定性OK 如果一定要调原函数,可以考虑加个MSHook,那个集成度高,稳定性更好些,期待asLody大佬修复下,对arm指令不是很了解