MobileSubstrateの拡張機能をデバッグする、つまりブレークポイントなどを配置する最善の方法は何ですか?これはXcodeでこれを行うには離れていますか? GNUデバッガ?MobileSubstrate Tweaksをデバッグする方法は?
答えて
#define Debugger() { kill(getpid(), SIGINT) ; }
次に、ブレークポイントを配置する場所にDebugger()を呼び出します。
あなたがスタックをトレースしたい場合は、例外を発生させることができます。
[NSException raise:@"Exception Message" format:formatString];
私は、syslogと尾を使用しています。 Cydiaのsyslogd
とErica Utilities
が必要です。その後、あなたの微調整の間にNSLog(@"breakpoint 1 - %@", someObject);
場所を調整してください。
tail -f /var/log/syslog
Typo: 'Erica Utilities'。 ; P – Matoe
モバイル基板は、あなたのdylibをターゲットプロセスに注入します。 GDBまたはLLDBを使用してターゲットプロセスをデバッグすると、拡張コードもデバッグされます。 GDBを使用してMobilesubstrate拡張機能をデバッグする方法を説明します。ここ は、単純なMobilesubstrate /ロゴスの拡張である:
%hook SBApplicationController
-(void)uninstallApplication:(id)application {
int i = 5;
i = i +7;
NSLog(@"Hey, we're hooking uninstallApplication: and number: %d", i);
%orig; // Call the original implementation of this method
return;
}
%end
私は、コンパイルしてインストールするコードを、それにGDBを取り付ける:
:yaron-shanis-iPhone:~ root# ps aux | grep -i springboard
mobile 396 1.6 4.3 423920 21988 ?? Ss 2:19AM 0:05.23 /System/Library/CoreServices/SpringBoard.app/SpringBoard
root 488 0.0 0.1 273024 364 s000 S+ 2:22AM 0:00.01 grep -i springboard
yaron-shanis-iPhone:~ root# gdb -p 488
あなたはコマンドを使用してMobilesubstrate拡張子を見つけることができます
(gdb) info sharedlibrary
このコマンドは、ロードされたモジュールのリストを出力し、内線番号を探します。
test-debug-substrate.dylib - 0x172c000 dyld Y Y /Library/MobileSubstrate/DynamicLibraries/test-debug-substrate.dylib at 0x172c000 (offset 0x172c000)
あなたはまた、ロゴuninstallApplicationフックのアドレスを見つけることができます。
(gdb) info functions uninstallApplication
これを出力する:
0x0172cef0 _logos_method$_ungrouped$SBApplicationController$uninstallApplication$(SBApplicationController*, objc_selector*, objc_object*)
あなたはブレークポイントや他のGDBの機能を使用してuninstallApplicationフック関数をデバッグすることができます。
(gdb) b *0x0172cef0+36
ここで、オフセット36はアセンブリopcodですこれは、uninstallApplicationフック関数のi変数に7を加えたものです。必要に応じてここからMobilesubstrateエクステンションをデバッグし続けることができます。
- 1. 基本的なMobileSubstrateの調整方法
- 2. mobilesubstrate extension
- 3. デバッグ用Linuxカーネルをデバッグする方法
- 4. django-widget-tweaksでMultipleChoiceFieldを使用するには?
- 5. Emacs:Pythonをデバッグする方法
- 6. プリプロセッサマクロをデバッグする方法
- 7. ハンギングアクションをデバッグする方法
- 8. ウォッチドッグタイムアウトをデバッグする方法
- 9. Rsweaveをデバッグする方法
- 10. フィドラーエクステンションをデバッグする方法
- 11. アンドロイドアプリケーションをデバッグする方法
- 12. Aquamacsをデバッグする方法
- 13. トレースレスクラッシュをデバッグする方法
- 14. UIGestureRecognizersをデバッグする方法
- 15. "ImagePullBackOff"をデバッグする方法は?
- 16. Pythonセグメンテーションフォールトをデバッグする方法は?
- 17. gstreamer-javaをデバッグする方法は?
- 18. smartystreets APIコールをデバッグする方法は?
- 19. JBossESBをデバッグする方法は?
- 20. ネイティブAndroidアプリをデバッグする方法は?
- 21. バブルソートコードをデバッグする方法は?
- 22. postgresqlストアドプロシージャをデバッグする方法は?
- 23. JDeveloperでWebMethodをデバッグする方法は?
- 24. AutoLayout制約をデバッグする方法は?
- 25. ServiceNowでトランスフォームスクリプトをデバッグする方法は?
- 26. Facebookのチャットボットをデバッグする方法は?
- 27. iOSでウェブサイトをデバッグする方法は?
- 28. コルドバのフックをデバッグする方法は?
- 29. OpenWisk processCallbackアクションをデバッグする方法は?
- 30. AWS RDSインスタンスをデバッグする方法は?
ブレークポイントを配置したらどうしますか? – Tyilo