各位大佬,我是根据这个
安装的 cycript,可是对某 wx程序调试的时候无法调试
终端代码:Ceshi-iphone:~ root# cycript -p 7425
反馈: [7447] DarwinInjector.cpp[263]: _krncall(mach_vm_read_overwrite) =10000003
*** _assert(status == 0):…/Inject.cpp(143):InjectLibrary
mac:10.14.5
iphone:12.3.1
是我用的工具不对啊,还是使用方法不当,我用最上面链接里的方法cyrun -n SpringBoard -e -d -f只能重启SpringBoard,并只对SpringBoard调试,不能对其他程序调试,不晓得对其他程序调试的方法
我用UIApp.keyWindow.recursiveDescription().toString() 调试
看到是下面
<CALayer: 0x282734f40>>
| | | <_SBOrientationTransformedContentView: 0x1031cd1c0; content: portrait (1); frame = (0 0; 375 667); layer = <CALayer: 0x282734f60>>
| | | | <UIView: 0x1031cf7c0; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x282735960>>
| | | | | <SBAppSwitcherScrollView: 0x1040f4e00; baseClass = UIScrollView; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x2828f4e10>; layer = <CALayer: 0x282735980>; contentOffset: {2498, 0}; contentSize: {3000, 667}; adjustedContentInset: {0, 0, 0, 0}>
| | | | | <UIView: 0x1031cfeb0; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x2828ef870>; layer = <CALayer: 0x282735a00>>
| | | | | | <SBReusableSnapshotItemContainer: 0x11106f680; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x28290d560>; layer = <CALayer: 0x2826aa7a0>>< AppLayout: <SBAppLayout: 0x282729d40>>
我看着像SpringBoard
请问怎么调试其他 app,或者是我哪有问题
Dobin
2
“SpringBoard”这个改成你想要调试的APP名称
脑子直来直去的,不晓得变通,只知道对cycript -p 4536改进程号,却没有想到cyrun -n SpringBoard -e -d -f改个名字,你的问号把我都逗笑了
Dobin
6
我看到这么个警告:
WARNING - Cycript is active but it looks like the bundleIdentifier you are trying to enable it for does not match!
请各位看看,我这个是调试代码不对吗
Ceshi-iphone:~ root# cyrun -b com.tencent.xin -e -d -f
applicationName: WeChat is running (7490)
executableName: WeChat
bundleIdentifier: com.tencent.xin
Cycript is active: com.apple.springboard
Device is not passcode locked
Tweak Mode
WARNING - Cycript is active but it looks like the bundleIdentifier you are trying to enable it for does not match!
You cannot enable Cycript in a new Process while it is still running in old one
Do you want to connect to the current Process (y or n)? y
Success, You may now run
cycript -r 127.0.0.1:8556
cy# UIApp.keyWindow.recursiveDescription().toString()
`<SBMainSwitcherWindow: 0x1031ca820; SBMainSwitcherViewController-0x1031ca820-3; baseClass = UIWindow; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x2828ead00>; layer = <UIWindowLayer: 0x282734640>>
| <UIView: 0x1031ccbe0; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x282734e80>>
| | <SBOrientationTransformWrapperView: 0x1031ccdc0; container: portrait (1); frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x282734f40>>
| | | <_SBOrientationTransformedContentView: 0x1031cd1c0; content: portrait (1); frame = (0 0; 375 667); layer = <CALayer: 0x282734f60>>
| | | | <UIView: 0x1031cf7c0; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x282735960>>
| | | | | <SBAppSwitcherScrollView: 0x1040f4e00; baseClass = UIScrollView; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x2828f4e10>; layer = <CALayer: 0x282735980>; contentOffset: {2873, 0}; contentSize: {3375, 667}; adjustedContentInset: {0, 0, 0, 0}>
| | | | | <UIView: 0x1031cfeb0; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x2828ef870>; layer = <CALayer: 0x282735a00>>
| | | | | | <SBReusableSnapshotItemContainer: 0x11106f680; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x28290d560>; layer = <CALayer: 0x2826aa7a0>>< AppLayout: <SBAppLayout: 0x282729d40>>
| | | | | | | <UIScrollView: 0x104379e00; frame = (0 -333.5; 375 1000.5); gestureRecognizers = <NSArray: 0x28290d4a0>; layer = <CALayer: 0x2826abd40>; contentOffset: {0, 0}; contentSize: {375, 2374.52}; adjustedContentInset: {0, 0, 0, 0}>
| | | | | | | | <SBAppSwitcherPageView:
UIApp.keyWindow.recursiveDescription().toString() 这句是不是用错了,我怎么感觉还是在调试SpringBoard
这句话没有错,你要正确退出cycript,然后会自动unload SpringBoard,然后执行cyrun -b xxx -e -d -f就可以了
真的万分感谢,我总是自欺欺人把 mac 终端关了,原来我才明白这个插件在手机上,我一直在调试SpringBoard,我说呢,我这不太明白原理,如果不是你这么指点,我估计今天要在这卡一天,真是太感谢了,包括楼上几位高人的指点,现在终于进到对应程序里看到各个类名和控件了.