iOS安全攻防之反编译

  Class-dump 进行反编译:

  之前做代码混淆, 首先了解了下反编译,使用入门级的反编译 class-dump.下载地址:最新版Class-dump.

      首先需要注意的是,class-dump的作用对象必须是未经加密的可执行文件,而从App Store下载的App都是经过加密签名的,相当于有一层“壳”,class-dump应付不了这样的文件。一般要先用AppCrackr来砸壳,砸壳方式在这里不做介绍。有一个简单的方法,在一些第三方软件下载应用的越狱安装版,这样版本的壳已经被手动砸开了.
      在安装过程中,双击.dmg 文件,把里面的 可执行文件 class-dump 拷贝到 /usr/bin 目录下才可以。(PS:若无法拷贝,请自行百度解决方案)
      检查是否安装成功需要在 Terminal 中输入指令"class-dump",若安装失败会提示 command not found;成功的会会提示:

  使用 Class-dump 反编译 - Zach Toby - Zach Toby的博客
  使用方法:
      Terminal输入 "class-dump -H xxx.app(需要反编译的) -o dir(反编译的文件的生成目录)"

  class-dump -H /Users/zhangtibin/Library/Developer/Xcode/DerivedData/TestClassDump-fvzusamyzxinyfeapjhdhynfqawf/Build/Products/Debug-iphonesimulator/TestClassDump.app -o /Users/zhangtibin/Documents/TestC

      最终看到结果:

  使用 Class-dump 反编译 - Zach Toby - Zach Toby的博客
  会把方法名反编译出来:

  

//
// Generated by class-dump 3.5 (64 bit).
//
// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#import "UIViewController.h"

@interface ViewController : UIViewController
{
}

- (void)testAction;
- (void)didReceiveMemoryWarning;
- (void)viewDidLoad;

@end

  另外其他显示信息如下:

  2、显示变量偏移:-a。如:

    

    偏移将会以注释的方式给出,如不加-a选项,则无此注释。

  3、显示函数地址:-A。如:

    

    函数地址将以注释的方式给出,如不加-A选项,则无此注释。

    此地址到底是FileOffset、VA、RVA?还需验证。

  4、方法按字母序排列:-S。

    静态方法,成员方法,属性均按字母序排列。

  5、查看Mach-O适应的CPU架构:--list-arches。例如输出armv7。

原文地址:https://www.cnblogs.com/ZachRobin/p/6892473.html