zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    当一个模块没有默认导出
    <<平仓>>
    模态对话框
    PlanB S2F 模型
    <<深入React技术栈>> CSS Modules
    状态提升
    ol.proj.transform 坐标系转换
    HTMLVideoElement.srcObject MediaStream MediaSource Blob File
    毛玻璃特效 backdrop-filter
    Filter
  • 原文地址:https://www.cnblogs.com/ZachRobin/p/6892473.html
Copyright © 2011-2022 走看看