V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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 · 2013-10-08 21:12:01 +08:00 · 13320 次点击
    这是一个创建于 3825 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在研究iOS App的安全性问题,我发现反汇编工具对iOS程序的反汇编能力相当强大,基本上反汇编出来,就只差变量名没有还原了。希望大家注意App的安全问题。不过我现在对于防护手段还没有找到什么好办法,有对于iOS代码混淆有研究的同学吗?希望懂这方面的同学能提供一些帮助。
    第 1 条附言  ·  2013-10-10 20:41:14 +08:00
    谢谢大家,我在微博和私人关系中总共收到了以下有效的信息,给大家分享一下:
    1. 一个微信的朋友告诉我,他们是把重要的ObjC代码用c写来保证安全性。这样还有一个好处是iOS和android可以公用,因为java反汇编也是很容易的。
    2. @刘江总编 提拱了2个相关的链接:《iOS编程实战》作者Rob Napier的文章Obfuscating Cocoa:http://t.cn/zRUgeF1 另外参考StackOverflow:http://t.cn/zRUgeFB
    23 条回复    2019-07-03 18:46:01 +08:00
    cluries
        1
    cluries  
       2013-10-08 21:19:05 +08:00
    这个很正常.
    毕竟OC是可以说是一门动态语言。
    调用方法直接就能看到..传入参数稍微推一下就能看出来。
    tangqiaoboy
        2
    tangqiaoboy  
    OP
       2013-10-08 21:47:05 +08:00
    @cluries 不止是这些,if语句,for/while循环逻辑这些也能还原出来。我之前写java的,感觉和java的反汇编代码真差不多。
    cluries
        3
    cluries  
       2013-10-08 21:53:38 +08:00
    @tangqiaoboy 是可以,而且所有语言都可以...
    icyalala
        4
    icyalala  
       2013-10-08 22:07:15 +08:00
    所有敏感信息和敏感逻辑尽量放到服务端。

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

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

    如果你下了个仿冒的货色 那神马都有可能发生了。
    nsa
        22
    nsa  
       2013-10-11 21:11:37 +08:00
    IDA Pro 土豪啊, iOS 开发代码混淆不比android, 意义不大或者不值。
    iHTCboy
        23
    iHTCboy  
       2019-07-03 18:46:01 +08:00
    尽量在 6 年后看到巧哥! 666
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2894 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 13:53 · PVG 21:53 · LAX 06:53 · JFK 09:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.