UraniumVCPU: An arm/arm64/x86/x64 virtual CPU framework for macOS/iOS/Android. 研究一下这个 原理应该差不多
知道哪里有参考文档吗,这个上面看了下,不知道怎么玩 ,也不确定实现原理是不是类似这个。。。
1、试玩了一下 UraniumVCPU
,其工作原理是将在内存中函数地址对应的汇编进行 “解析” 操作,那么问题来了,“VChat” 的 MachO都没有加载进内存,没有分配内存空间,怎么来的函数指针给 这个解析器操作呢?实现原理为解析器说法的疑问点之一。这个框架有点类似 Unicorn Engine(魔改?);
2、然后我换了个思路,那么将我自己的Demo加载进内存后,直接映射调用Demo中的 main
方法会怎样呢?使用lipo
将 MachO
瘦身 结合 app2dylib
工具,将demo1的可执行文件转成 dylib
, 在 Demo2 内 使用 dlopen
打开 demo1.dylib
, 在自己的界面点击按钮触发调用 demo1
的 main
方法,由于 main
会绑定一个 继承自 UIResponder
遵循 UIApplicationDelegate
协议 的对象(通俗来说是日常常见的AppDelegate),这个对象在App生命周期里只能存在一个,从而报错:“AppDelegate 重复创建”(大概意思,忘记copy log了),如果这个App单纯的是将 “VChat” 的 main()
执行的话会有这个问题,还有 在 main
之前的 load
方法的调用该如何解决呢?
3、签名问题,尝试dylib加载进内存时,dylib也需要签名,如果dylib没有签名,会在 dynamic linker ( dyld ) checks 的时候报未签名。显然这个App也不是这种方式加载 MachO 的,在越狱机上也没发现被转成 dylib 的 MachO;
各位同学,还有什么思路吗,或者有什么切入点可以逆这个App吗。
黑科技,だいすき
内存映射表里面有挺多指向应用自己可执行文件的大段,但是内容对不上,应该是加载了的
公用AppDelegate不就行了 还有签名他都用cpu虚拟执行了 应该不用签名才对啊
1、UraniumVCPU
这个是个解析器,类似python 解析器,但是 UraniumVCPU
他有个先前条件是解析内存中对应的方法的汇编,下载下来的文件并没有加载到内存中,应该不是用这个(也不排除是私有版,毕竟我没证据),这个工具提供的API只有两个,两个方法的API参数都是传(原方法)函数指针。
2、共用AppDelegate的话,那么启动完毕后,这个方法将不会再次被调用,如果不能再次调用,“VChat” 中的类似方法也没有被加载
- application: didFinishLaunchingWithOptions:
目标App中 load
函数也同理,而且如果 main
中有操作的话也会丢失,共用AppDelegate 不是理想中的实现方案
那你觉得他是用什么呢
不共用AppDelegate也是可以的 就是自己初始化目标app的一些环境咯,动态加载main controller
鄙人不才,没办法找到切入点,我并没有具体想法,如果凭主观猜测做技术的话,我估计不行
现在这个app还能打开吗?
我看抓包显示地址是https://www.xinzhu.ltd
有人了解过这个东西么
还在研究 23333
把别人app修改自签名然后搞成自己的app,这种本来是违规违法的吧,这种东西不在明面也就罢了,在明面还上appstore那真是胆子大。只能说什么时候出事的问题
1000% 违法
大佬,我想了解一下,如果在非越狱状态下,实现了dyld的功能,那是不是可以用dobby的inlinehook去hook那些个sub了?因为在我的认知下,非越狱下即使app注入了dylib安装,也无法实现hook sub
非越狱你怎么实现dyld 都加载不了app吧
inline hook(实际需要的是动态代码签名)在没洞的情况下不可能。
不知道有没有人研究用webkit的rwx搞代码执行,不过好像没用webkit都在独立进程里
有人试过魔改macho可以实现
你这跟他做法完全不一样的
ARM64解释器可以参考https://github.com/61bcdefg/unicorn-tcti