首页
社区
课程
招聘
6
[原创]iOS5下手工解密应用软件
发表于: 2012-7-1 15:19 26916

[原创]iOS5下手工解密应用软件

2012-7-1 15:19
26916

博客地址: 



按以往资料解密iOS5应用软件会遇到两个问题:




  • nm出来的符号里,没有start了,因此不知道在哪里下断点,即便下到常规的0x2000处,也会断不下来;
  • 找到合适的断点后,gdb只要run就出现奇怪的错误,还是断不下来。



下面以Douban.fm.ipa的解密为例,解决这两个问题。



为了保持完整性,从头开始说明步骤。注意有的指令在Mac上运行,也有的指令在iOS上运行,根据命令提示符区分。在iOS上的默认路径是/var/mobile/Applications/79A81359-AD9D-4268-91FC-93D1E77F5208/Douban.fm.app/。



1. 查看FAT信息



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
claud@Mac$ otool -f Douban.fm
Fat headers
fat_magic 0xcafebabe
nfat_arch 2
architecture 0
    cputype 12
    cpusubtype 6
    capabilities 0x0
    offset 4096
    size 1114560
    align 2^12 (4096)
architecture 1
    cputype 12
    cpusubtype 9
    capabilities 0x0
    offset 1122304
    size 1121696
    align 2^12 (4096)



这里的几个信息:



1) 有两个体系结构的代码,其中cputype均为12,即ARM,但cpusubtype不同,分别为6和9,对应ARMv6和ARMv7。在iOS 5.1设备上,均采用后者,即ARMv7。



2) ARMv7代码的偏移是archoff = 1122304,大小是archsize = 1121696。



2. 把ARMv7代码提取出来


1
claud@Mac$ lipo -thin armv7 Douban.fm -output Douban.fm.armv7



3. 查看这部分代码的加密信息


1
2
3
4
5
6
claud@Mac$ otool -l Douban.fm.armv7 | grep CRYPT -A 4
          cmd LC_ENCRYPTION_INFO
      cmdsize 20
    cryptoff  4096
    cryptsize 876544
    cryptid   1



这里有几个信息:



1) cryptid = 1,即是加密的



2) 加密代码的偏移cryptoff = 4096 (0x1000),加密代码的大小cryptsize = 876544 (0xd6000)



4. 定位入口点


1
2
3
4
5
6
7
8
9
10
11
12
13
claud@Mac$ otool -l Douban.fm.armv7 | grep __TEXT -A 3 -B 1 | head -12
  cmdsize 600
  segname __TEXT
   vmaddr 0x00001000
   vmsize 0x000d7000
  fileoff 0
--
  sectname __text
   segname __TEXT
      addr 0x00002774
      size 0x000aa9ec
    offset 6004
--



这里有几个信息:



1) __TEXT的加载地址vmaddr = 0x1000,加载后大小vmsize = 0xd7000



2) __text节的加载地址entry = 0x2774(即为入口点地址)



5. 安装兼容iOS 5的gdb调试器



cydia官方源的gdb目前与iOS 5的兼容性存在问题,遇到断点是断不下来并且报错,出错信息是:


1
../../gdb-1518/src/gdb/macosx/macosx-nat-mutils.c:772: internal-error: assertion failure in function "mach_xfer_memory": r_end >= cur_memaddr



下列源提供了完全兼容iOS 5的gdb:



cydia.radare.org



在Cydia中添加这个源,然后更新gdb至最新的版本1708即可。



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
伟叔叔
为你点赞~
2024-5-31 05:11
心游尘世外
为你点赞~
2024-5-31 01:57
QinBeast
为你点赞~
2024-5-31 01:49
飘零丶
为你点赞~
2024-3-29 01:14
shinratensei
为你点赞~
2024-1-30 04:30
PLEBFE
为你点赞~
2023-3-7 00:42
最新回复 (19)
雪    币: 534
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持一个,还没进军ios哎,膜拜下
2012-7-1 19:12
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
thanks for sharing...
2012-7-10 11:04
0
雪    币: 14983
活跃值: (5300)
能力值: ( LV15,RANK:880 )
在线值:
发帖
回帖
粉丝
4
这篇文章写的不错,很详细。
2012-7-10 14:27
0
雪    币: 168
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感觉太深奥了。
2012-7-20 11:46
0
雪    币: 223
活跃值: (185)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
不错,感谢分享。新的领域,这块应该很有搞头。
2012-8-21 21:51
0
雪    币: 20
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我也这样认为
2012-8-22 01:43
0
雪    币: 107
活跃值: (424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哇塞这个要收藏啊.......................................
2012-8-22 04:54
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这个得收藏下!!!!谢谢楼主!
2012-11-3 00:30
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
IOS是一个比较新的方向,可以努力
2013-1-7 13:35
0
雪    币: 304
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
领先大半年啊,hard wording!
2013-2-8 11:12
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
我的电脑是linux平台的,因为没有用过mac平台,只知道它是类unix的,所以不知道你这些指令是否能在linux平台上通用 ???   
或者说如果我用linux来做这些事情的话,会不会受到影响?
2013-2-13 17:18
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
1、如今的破解游戏或者是应用软件是否都是这样的?
2、ios 6.1.x的系统上安装了那个源后,GDB是否可以正常运行?
3、关于mac上的命令——我只有linux系统 ,并没有MAC的电脑,这样的话涉及到的命令就有运行不了的情况了,如otool命令等 ,可否有替代命令?或者是在纯linux系统上如何实现?
2013-2-28 15:16
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
非常好的文章.
2013-3-10 17:43
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
初学请教: 入口断点不成功

(gdb) set sharedlibrary load-rules ".*" ".*" none
(gdb) set inferior-auto-start-dyld off
(gdb) set sharedlibrary preload-libraries off
(gdb) b *0x3948
Breakpoint 1 at 0x3948
(gdb) r
Starting program: /private/var/mobile/Applications/B19BE2A1-1BF4-4DED-863B-2A335C9AAA52/iRead.app/iRead
---无法中断

附: Load command 1
      cmd LC_SEGMENT
  cmdsize 736
  segname __TEXT
   vmaddr 0x00001000
   vmsize 0x007f4000
  fileoff 0
filesize 8339456
  maxprot 0x00000005
initprot 0x00000005
   nsects 10
    flags 0x0
Section
  sectname __text
   segname __TEXT
      addr 0x00003948
      size 0x0026f670
    offset 10568
     align 2^3 (8)
    reloff 0
    nreloc 0crypt
     flags 0x80000400
reserved1 0
reserved2 0
2013-7-19 17:42
0
雪    币: 5
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
没有基础,不知从何学起。这个版块人气不旺,需要楼主这样的大虾多发好贴才行
2013-7-23 11:11
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
请问一下,指令的特征码是怎么回事,刚入手,不是很清楚,能给个链接什么的学习地址么?
2013-7-25 20:24
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
“为此,我们需要搜索LC_ENCRYPTION_INFO这条load command指令的地址,用它的特征串即可,即搜索十六进制的2100000014000000。”

这个能不能再仔细讲讲呢?如何搜索,又怎么转换为特征串呢?
2013-7-26 11:25
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
哎,没有人回答么,我只能记住这个了:2100000014000000。
2013-9-17 19:38
0
雪    币: 28
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
用ue等二进制工具 搜索这个16进制的特征码即可
2014-4-13 23:51
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册