iOS 逆向开发指西

随着业务发展 安全攻防这块也需要作了解,避免灰产薅羊毛。要想研究怎么弄盾 首先要去研究矛。
先介绍我用到的技术

  • monkeydev 基本这个就是全套服务了,初级逆向开发者用这个足已
  • class dump 对砸壳后的app进行恢复头文件 方便我们了解。 (monkey dev 已集成)
  • yoyolib 将动态库链接至app (monkey dev 已集成)
  • pp助手 手头没有越狱机 无法砸壳,所以就用pp上的砸壳后的IPA 。
  • hook工具 CaptainHook fishhook

Monkeydev

记得一定要看wiki 新手将wiki看个几遍就行了。

class-dump

这个安装之后需要将bin文件一道 /usr/bin or /usr/local/bin 如果提示无权限还需要给这个文件权限。

先简单介绍下CaptainHook

CHDeclareClass() //申明需要的类

CHOptimizedMethod()//需要hook的函数  参数有函数的类型 返回值
{
      CHSuper2()调用原来的方法。
}
CHConstructor({
        @autoreleasepool{
                CHLoadLateClass() 加载这个类 执行hooke
                CHHook1() 需要hook的函数
        }
})

其实你把monkey整个wiki 看过一遍基本能初步入门逆向。
这里介绍几个小技巧。

  • class-dump 之后的头文件分析出自己需要的函数 当我们需要调用宿主的类时 我们可以自己申明一个头文件,包含我们需要的类 以及其方法
@interface MMTableViewInfo : NSObject
- (void)insertSection:(id)sec At:(int)index;
- (UITableView *)getTableView;
@end

这样我们就有了代码提示。没必要去用runtime

  • PP助手上一定要选 越狱包
  • 在工程的buildSeting里搜 User-Defined ,如果搜不到 就搜 monkey ,会有几个选项让你选择。我们将所有的都设置为yes 这时候 monkeydev 会帮你classdump 已经做符号表恢复。
  • 介绍个调试技巧, 自己看。
    简单来说 在lldb‘下获取一个类所有函数的地址的方法, [fuckClass _shortMethodDescription]。
    然后用b 0xfffffffff 就可以设置断点拉
  • 基本这时候你就可以去使用了啊

你可能感兴趣的:(iOS 逆向开发指西)