嗯书上有我让他去看书然后把后续回复删了。
无论如何,感谢您的输入
我看了下,这个是UIKit给NSObject增加的方法,逆向下这两个方法,可以照着在Mac OS X上写一个…
主要用了class_copyMethodList,class_copyPropertyList这两个函数
-[NSObject(IvarDescription) _methodDescriptionForClass:]
-[NSObject(IvarDescription) _shortMethodDescription]
methods
Dumps all methods inplemented by the NSObject subclass (iOS, NSObject subclass only)
(lldb) methods UIView
command regex methods ‘s/(.+)/expression -lobjc -O – [%1 _shortMethodDescription]/’
awesome!!
so good!
mark 下,找地址便利了很多
张总 用这个提示 error: unable to execute script function 命令行和Xcode都一样提示这玩意儿。。是我哪里少配置什么了嘛 我的步骤 1 下载py 2 touch ~/.lldbinit 3 vi command script import 脚本路径 4 lldb 5 bom xx xx 提示这个错误 不能执行脚本方法
为什么我的不行哇…
帮我看下这个问题,困扰我两天了, 求解答 http://bbs.iosre.com/t/lldb/10258/6
cool, 3Q
厉害~以后逆向省事多了~
各位大哥这个问题解决了嘛? @AloneMonkey @Zhang @snakeninny
(lldb) po [MMServiceCenter _shortMethodDescription]
error: Execution was interrupted, reason: internal ObjC exception breakpoint(-3)..
The process has been returned to the state before expression evaluation.
流弊流弊~
你把其他断点先禁用了试试?
没有其他断点。
我attach的是一个系统的后台进程。 akd
so cool
逆向AppStore为啥输入的是微信的指令
报同样的错,只是顺手把他那个copy下来了。
那就解释通了。akd没有加载UIKit。 这个方法是uikit的category。解决方案就是自己加载一遍uikit
谢谢啦, 明天早上就试一哈
还是同样的错。
__attribute__((constructor)) static void init(int argc, const char **argv) {
NSLog([UIViewController _shortMethodDescription]);
}
上面的代码,在log中看起来是正常
<UIViewController: 0x3b18e40c>: in UIViewController:
Class Methods:
+ (id) _currentWhitePointAdaptivityStyleViewController; (0x29223919)
+ (id) _currentStatusBarStyleViewController; (0x290125a5)
+ (id) _currentStatusBarHiddenViewController; (0x29012979)
+ (void) _performWithoutDeferringTransitions:(^block)arg1; (0x29217779)
+ (void) _traverseViewControllerHierarchyWithDelayedRelease:(^block)arg1; (0x29214231)
+ (id) viewControllerForView:(id)arg1; (0x28ec3805)
+ (void) initialize; (0x28f189c9)
....
看日志的确是没有找到这个方法
09:48:36 akd➜(null): unrecognized selector sent to class 0x3b18e40c
尝试用张总的py脚本来下断点也不行
(lldb) bom UIViewController doesOverridePreferredInterfaceOrientationForPresentation
error: libarclite_iphoneos.a(arclite.o) failed to load objfile for /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a
warning: failed to set breakpoint site at 0x0 for breakpoint 1.1: error: 0 sending the breakpoint request
Breakpoint 1: address = 0x00000000
另外脚本有几个地方张总可能有点手误
1. 方法签名
可能和lldb的版本有关系,我的版本是 lldb-902.0.79.2
所以我把方法签名改成了下面这样
def breakonmethod(debugger, command, result, internal_dict):
去掉了一个参数
2. script add
debugger.HandleCommand(
'command script add -f BreakMessage.breakonmethod bom')
这个 -f
后面应该是文件名吧?我也没查反正改成文件名就work了
debugger.HandleCommand(
'command script add -f BreakOnMethod.breakonmethod bom')