关于iOS程序的反汇编 - V2EX
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 14022 次点击
    这是一个创建于 4456 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在研究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 div class="fr">     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     Solana     2380 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 15:46 PVG 23:46 LAX 07:46 JFK 10:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86