whale icon indicating copy to clipboard operation
whale copied to clipboard

achieve issue #35

Open fettdrac opened this issue 5 years ago • 6 comments

It is my first time to contribute codes to such a famous open-source project, there must be something important that are not mentioned by me, so if any problems happens,I will be very happy to solve it as soon as possible during my summer vacation.

add functions mentioned above in issue #35

Thank you.

fettdrac avatar Jul 05 '19 10:07 fettdrac

你好, 想请教怎么操作? 只要把java目录下的文件复制到自己的app的java 目录下 运行就可以了吗?

NoahNyy avatar Jul 15 '19 03:07 NoahNyy

你好, 想请教怎么操作? 只要把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 shell就可以无感知完成,用户无非就感觉启动时间变久了。

fettdrac avatar Jul 20 '19 04:07 fettdrac

fettdrac 有qq或者wechat吗

jiejiao6 avatar Jul 21 '19 06:07 jiejiao6

patch SELinux之类的可以参考KSMA里的那段shellcode,也可以在这里等待mediaserver混进secure world让RKP保护为我们所用(完整任意地址读写~)

这块代码在哪里呢

jiejiao6 avatar Jul 21 '19 06:07 jiejiao6

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权限下往内核空间写点东西办法很多

fettdrac avatar Jul 23 '19 07:07 fettdrac

MSHook/Hooker.h not found

lingade avatar Jan 10 '21 16:01 lingade