iOS 开发实用技术导航
NSHipster 中文版
› http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
› http://www.cocos2d-iphone.org/
CocoaPods
› http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
› http://code.google.com/mobile/analytics/
WWDC
› https://developer.apple.com/wwdc/
Design Guides and Resources
› https://developer.apple.com/design/
Transcripts of WWDC sessions
› http://asciiwwdc.com
Cocoa with Love
› http://cocoawithlove.com/
Cocoa Dev Central
› http://cocoadevcentral.com/
NSHipster
› http://nshipster.com/
Style Guides
› Google Objective-C Style Guide
› NYTimes Objective-C Style Guide
Useful Tools and Services
› Charles Web Debugging Proxy
› Smore
tangqiaoboy
V2EX  ›  iDev

关于iOS程序的反汇编

  •  
  •   tangqiaoboy · Oct 8, 2013 · 14890 views
    This topic created in 4776 days ago, the information mentioned may be changed or developed.
    最近在研究iOS App的安全性问题,我发现反汇编工具对iOS程序的反汇编能力相当强大,基本上反汇编出来,就只差变量名没有还原了。希望大家注意App的安全问题。不过我现在对于防护手段还没有找到什么好办法,有对于iOS代码混淆有研究的同学吗?希望懂这方面的同学能提供一些帮助。
    Supplement 1  ·  Oct 10, 2013
    谢谢大家,我在微博和私人关系中总共收到了以下有效的信息,给大家分享一下:
    1. 一个微信的朋友告诉我,他们是把重要的ObjC代码用c写来保证安全性。这样还有一个好处是iOS和android可以公用,因为java反汇编也是很容易的。
    2. @刘江总编 提拱了2个相关的链接:《iOS编程实战》作者Rob Napier的文章Obfuscating Cocoa:http://t.cn/zRUgeF1 另外参考StackOverflow:http://t.cn/zRUgeFB
    23 replies  •  2019-07-03 18:46:01 +08:00
    cluries
    cluries
    Oct 8, 2013
    1
    这个很正常.
    毕竟OC是可以说是一门动态语言。
    调用方法直接就能看到..传入参数稍微推一下就能看出来。
    tangqiaoboy
    tangqiaoboy
    OP
    Oct 8, 2013
    2
    @cluries 不止是这些,if语句,for/while循环逻辑这些也能还原出来。我之前写java的,感觉和java的反汇编代码真差不多。
    cluries
    cluries
    Oct 8, 2013
    3
    @tangqiaoboy 是可以,而且所有语言都可以...
    icyalala
    icyalala
    Oct 8, 2013
    4
    所有敏感信息和敏感逻辑尽量放到服务端。

    如果非要放到客户端来,要用纯C实现,加密混淆什么的也都在这里面搞。
    objc层面也尽量小心,最起码不要用太显眼的方法名。

    嗯。。如果真有人想搞你的App技术又非常非常厉害,那只能祈祷一下了。。苹果自己都防不住那些大牛。
    fgwww
    fgwww
    Oct 8, 2013
    5
    用的啥工具这么厉害?ida pro?
    luikore
    luikore
    Oct 8, 2013
    6
    -O4 可以把少量 extern 的调用内联掉
    不会被动态调用的方法名可以自己整个特征明显的命名规范, 然后写个简单脚本在编译前批量替换掉
    FanError
    FanError
    Oct 8, 2013
    7
    请问楼主用啥iOS工具反编译效果能达到java反汇编代码那样?
    alexrezit
    alexrezit
    Oct 8, 2013 via iPhone
    8
    是什么工具呢? 说出名字来我回去试试自己的 app.
    marginleft
    marginleft
    Oct 8, 2013 via iPad
    9
    这么厉害?!楼主用的哪款神器??
    lldong
    lldong
    Oct 9, 2013
    10
    Hopper 的反汇编效果不错,能生成伪代码,稍微好理解一些,不过离 Java 反汇编的效果还很远
    txx
    txx
    Oct 9, 2013 via iPhone
    12
    我刚才用 ida 免费版撸了一下 qq mail objc 部分 全部露出来了,因为oc是先被弄成字符串嘛。c/c++的 就只有汇编代码。
    46fo
    46fo
    Oct 9, 2013 via iPhone
    13
    ida 一下就出来了
    cctvsmg
    cctvsmg
    Oct 9, 2013
    14
    目前ios下的加密软件好像不多吧,可以移植一个虚拟机加密上去
    fgwww
    fgwww
    Oct 9, 2013
    15
    app store上的app是混淆过了的。我想知道怎么做到能像java反汇编那样的效果,给张图看看.
    jokerlee
    jokerlee
    Oct 10, 2013
    16
    比较敏感的部分用c/c++写成动态链接库
    tangqiaoboy
    tangqiaoboy
    OP
    Oct 10, 2013
    17
    谢谢大家,我在微博和私人关系中总共收到了以下有效的信息,给大家分享一下:
    1. 一个微信的朋友告诉我,他们是把重要的ObjC代码用c写来保证安全性。这样还有一个好处是iOS和android可以公用,因为java反汇编也是很容易的。
    2. @刘江总编 提拱了2个相关的链接:《iOS编程实战》作者Rob Napier的文章Obfuscating Cocoa:http://t.cn/zRUgeF1 另外参考StackOverflow:http://t.cn/zRUgeFB
    dorentus
    dorentus
    Oct 10, 2013
    18
    话说楼主到底是用什么工具反编译的这么厉害……
    dorentus
    dorentus
    Oct 10, 2013
    19
    @jokerlee iOS 上面又不能动态链接
    tangqiaoboy
    tangqiaoboy
    OP
    Oct 10, 2013
    20
    @dorentus IDA啊。iOS上可以静态链接的。
    plprapper
    plprapper
    Oct 10, 2013
    21
    android相对来说乱一些 感觉苹果还好吧 软件从官方下载

    如果你下了个仿冒的货色 那神马都有可能发生了。
    nsa
    nsa
    Oct 11, 2013
    22
    IDA Pro 土豪啊, iOS 开发代码混淆不比android, 意义不大或者不值。
    iHTCboy
    iHTCboy
    Jul 3, 2019
    23
    尽量在 6 年后看到巧哥! 666
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2185 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 15:52 · PVG 23:52 · LAX 07:52 · JFK 10:52
    ♥ Do have faith in what you're doing.