如何用代码实现类似cycript里面的choose(XXXHelper)功能呢?

我们都知道用cycript的choose(XXXHelper)可以找到内存中存在的XXXHelper类。

那么如果是在程序里面,可以用代码实现吗?

有木有相关关键词提供一下呢?我搜索一下

来自碧玺
https://blog.0xbbc.com/2015/07/抽离cycript的choose功能/

tl;dr: 自己搜索内存

注意这是GPL协议。

虽然这么说你国我还没有见过遵守开源许可证的开发者

3 个赞

这个代码还可以用在新版的iOS上吗?2年了呢

原理应该是没问题的。

谢谢张总,我试试

#include set 编译 这个头报错

Compiling choose.m…
choose.m:7:10: fatal error: ‘set’ file not found

set这个是 Objective-C++里面的库,你直接把后缀名m改为mm就行

大佬解决了吗

Cast of ‘uintptr_t’ (aka ‘unsigned long’) to ‘Class’ is disallowed with ARC,我这里有这个错误,但不知怎么去改

我写了一个lldb版本的choose命令,在调试器中可以使用cycript的choose功能。 连接:GitHub - 4ch12dy/xia0LLDB: LLDB python scripts for iOS arm64 reversing by xia0

改mm也不行

为什么大佬发的信息,图没了,头像也没了

我把项目传到了github,还有错误的话自己下载下来对照看下吧。https://github.com/4ch12dy/choose-xcode

不太清楚,图片是直接传到的论坛。

theos 编译怎么还不行呢

报什么错?主要有两个问题:Objective-C++头文件问题(其实可以不用set,用OC的集合就行),还有就是ARC问题,需要增加编译的FLAG。建议把项目放出来

linux系统安装的theos。

首先你需要把choose.m改为choose.mm,然后再theos的Makefile添加如下:
$(TWEAK_NAME)_CXXFLAGS = -stdlib=libc++ -std=c++11
$(TWEAK_NAME)_LDFLAGS = -stdlib=libc++ -std=c++11

%E5%9B%BE%E7%89%87 %E5%9B%BE%E7%89%87