iOS逆向之工具

1、监测工具

** Reveal**
1、使用framework集成Reveal到项目中。每个项目都需要集成,设置proj,比较啰嗦,上线时,还需要将Reveal.framework删除。
2、使用lldb命令集成Reveal到项目中。无污染,绿色。
这里只介绍2:
第一条命令:

expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)

ps:/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib这个地址为绝对路径,我的Reveal是存放于application目录下的,所以路径就是/Applications/Reveal.app/.....

第二条命令:

expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];

两条命令顺利的话,控制台则会打印INFO:Reveal Server started (Protocol Version 25).这条信息。(如下图)

集成成功的效果图

直接点击控制台continue,跳过断点,打开Reveal,左上角点击No Connection,就可以看见自己的app了。接下来就尽情的玩耍吧!

在这里我使用了clang attribute里的
__attribute__((objc_runtime_name("40ea43d7629d01e4b8d6289a132482d0dd5df4fa")))

将这段添加至Appdelegate.h文件的@interface之前。举个栗子:

__attribute__((objc_runtime_name("40ea43d7629d01e4b8d6289a132482d0dd5df4fa")))
@interface KSAppDelegate : UIResponder<UIApplicationDelegate>

在第一个命令执行时,会找不见KSAppdelegate这个类,因为我们使用clang attribute中方法对类名进行了替换。这其实就是一个简单的代码混淆。

.lldbinit里设置别名
每次需要Reveal来审查UI的时候都要输入这两条的命令,命令太长,也不方便我们记忆。我们可以在~/目录下的.lldbinit文件里为我们的LLDB命令添加别名。

.lldbinit是一个隐藏文件,默认是不存在的。而Xcode每次启动的时候,则都会去~/.lldbinit这个目录寻找这个文件里的LLDB命令。所以我们可以在这个文件里进行一些命令的初始化设置或者设置别名等等。

现在,我们打开终端,使用touch ~/.lldbinit命令来进行创建。
然后vi ~/.lldbinit,进入shell编辑器,粘贴命令:

command alias jueyingxx_reveal_load_sim expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)

command alias jueyingxx_reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];

然后下次调用Reveal时就可以使用我们自己的命令:jueyingxx_reveal_load_simjueyingxx_reveal_start来替代上面的两条命令,达到相同的目的。

另外两个监测工具,这里不做介绍:
snoop-it
introspy


2、反汇编工具

IDA
IDA是逆向工程中最常用的利器,作为老牌反汇编工具,支持 Windows 、Linux、 OSX和多种处理器架构。
Hopper
Hopper是一款今年面世的反汇编工具,它主要针对的是Apple操作系统。

3、调试工具

LLDB

4、开发工具

iOSOpenDev:基于Xcode的工具。
Theos:命令行工具。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 上一篇已经大体给大家介绍了几款工具,相信大家都有所了解了。如果不了解可以再去看看。哈哈。言归正传,接下来就是通过一...
    FlyOceanFish阅读 3,576评论 0 1
  • 最近在开始研究iOS逆向工程,于是就按照经典的“小黄书”(iOS应用逆向工程 第二版)进行工具的搭建。想不到15年...
    雷侯塞利阅读 5,714评论 0 1
  • 前言 LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debug...
    Noskthing阅读 18,640评论 10 89
  • 1. 我握着那本淡蓝色封面的笔记本,里面是张牙舞爪却又让人心疼的字迹,莫名的想起第一次看到小B的时候。 小B...
    杨家一公子阅读 2,990评论 0 0
  • 结构 1:监听来电事件 2:查询,打开,数据库。匹配正则表达式 3:监听用户手势
    JokerLiang阅读 1,796评论 0 0

友情链接更多精彩内容