首页
社区
课程
招聘
[原创]iOS加固浅谈之字符串加密
发表于: 2017-5-31 21:20 25495

[原创]iOS加固浅谈之字符串加密

2017-5-31 21:20
25495

在大多数iOS应用中,一些工具,比如Clutch,class-dump,cycript,lldb,theos.对应用程序的结构,代码逻辑,运行流程,可以做到很容易的分析。然后进行应用的破解,篡改,重签名。所以很有必要对代码做一些保护。


      4.中间人攻击 :https, 证书验证, 数据加密


比如这种字符串,我们看看其反汇编代码:

0000000100006794         sub        sp, sp, #0x30                               ; Objective C Implementation defined at 0x1000080f8 (instance method), DATA XREF=0x1000080f8

0000000100006798         stp        x29, x30, [sp, #0x20]

000000010000679c         add        x29, sp, #0x20

00000001000067a0         mov        x8, sp

00000001000067a4         adrp       x9, #0x100008000

00000001000067a8         add        x9, x9, #0xc88                              ; @selector(viewDidLoad)

00000001000067ac         adrp       x10, #0x100008000

00000001000067b0         add        x10, x10, #0xca8                            ; 0x100008ca8

00000001000067b4         stur       x0, [x29, #-0x8]

00000001000067b8         str        x1, [sp, #0x10]

00000001000067bc         ldur       x0, [x29, #-0x8]

00000001000067c0         str        x0, sp

00000001000067c4         ldr        x10, x10

00000001000067c8         str        x10, [sp, #0x8]

00000001000067cc         ldr        x1, x9

00000001000067d0         mov        x0, x8

00000001000067d4         bl         imp___stubs__objc_msgSendSuper2

00000001000067d8         adrp       x0, #0x100008000                            ; argument #1 for method imp___stubs__NSLog

00000001000067dc         add        x0, x0, #0x60                               ; @"Hello CR25"

00000001000067e0         bl         imp___stubs__NSLog

00000001000067e4         ldp        x29, x30, [sp, #0x20]

00000001000067e8         add        sp, sp, #0x30

00000001000067ec         ret

CR25明文,如果我们这里是程序的敏感信息的话,分析者就会很容易找到我们的敏感信息。这里需要给字符串加密,然后运行时进行动态解密。

这里为了举例,我只做了简单的异或,具体算法你可以根据需求自己选择。

字符串加密后源码:

再看看反汇编:


                     -[ViewController viewDidLoad]:

0000000100006660         sub        sp, sp, #0x40                               ; Objective C Implementation defined at 0x1000080e0 (instance method), DATA XREF=0x1000080e0

0000000100006664         stp        x29, x30, [sp, #0x30]

0000000100006668         add        x29, sp, #0x30

000000010000666c         add        x8, sp, #0x10

0000000100006670         adrp       x9, #0x100008000

0000000100006674         add        x9, x9, #0xc70                              ; @selector(viewDidLoad)

0000000100006678         adrp       x10, #0x100008000

000000010000667c         add        x10, x10, #0xca8                            ; 0x100008ca8

0000000100006680         stur       x0, [x29, #-0x8]

0000000100006684         stur       x1, [x29, #-0x10]

0000000100006688         ldur       x0, [x29, #-0x8]

000000010000668c         str        x0, [sp, #0x10]

0000000100006690         ldr        x10, x10

0000000100006694         str        x10, [sp, #0x18]

0000000100006698         ldr        x1, x9

000000010000669c         mov        x0, x8

00000001000066a0         bl         imp___stubs__objc_msgSendSuper2

00000001000066a4         adrp       x8, #0x100008000                            ; argument #1 for method __B97DE2E4_175_F0C445_2D3_29549CFFE480

00000001000066a8         add        x0, x8, #0xd58                              ; __7VA7EOJRUDOSFIS

00000001000066ac         bl         __B97DE2E4_175_F0C445_2D3_29549CFFE480

00000001000066b0         mov        x29, x29

00000001000066b4         bl         imp___stubs__objc_retainAutoreleasedReturnValue

00000001000066b8         mov        x1, x0

00000001000066bc         str        x0, [sp, #0x8]

00000001000066c0         mov        x0, x1

00000001000066c4         bl         imp___stubs__NSLog


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (18)
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了.帮助很大.确实是加密字符串非常好的思路
2017-5-31 21:40
0
雪    币: 3907
活跃值: (5817)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
3
确实是非常好的思路。
2017-6-28 12:27
0
雪    币: 1
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
思路不错
2017-7-5 23:04
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
人工混淆,利用Clang  语法树  自动提取、再混淆字符串、方法名、属性等;

谢分享,好思路
2017-8-14 17:11
0
雪    币: 608
活跃值: (403)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6

Monkey前来点赞!


课程里面有讲到(逃

2017-8-15 12:38
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
各位有没有clang  生成语法树好的参考资料推荐?
2017-8-18 10:20
0
雪    币: 611
活跃值: (778)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我来偷了资料就跑,真刺激。,学到新姿势
2017-9-15 10:30
0
雪    币: 19
活跃值: (130)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
怎么把加密的内容编译到app中呢?
2017-10-16 16:50
0
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
66666666666
2017-10-17 16:47
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
名字很666
2017-10-17 21:35
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了
2017-11-28 17:32
0
雪    币: 184
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
25期的兄弟,可以的
2018-1-24 09:32
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
点个赞   
2018-3-5 15:51
0
雪    币: 97
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
膜拜聂大神
2018-5-7 09:41
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
老哥  跪求你QQ  有事需要你帮助  我QQ210316026
2018-5-10 21:04
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
哈哈哈哈,小白一个,来看热闹,还有mokey
2018-6-13 14:56
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好东西,多谢!
2018-10-19 12:53
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
里面那个方法是加密字符串的呢,没有看到加密方法呀,这个库ParseClangLib.zip 
2020-3-27 15:12
0
游客
登录 | 注册 方可回帖
返回
//