iOS 解密.ipa文件

您所在的位置:网站首页 推行5s的目的是 iOS 解密.ipa文件

iOS 解密.ipa文件

#iOS 解密.ipa文件| 来源: 网络整理| 查看: 265

对iOS的.ipa文件进行解密,我们称为砸壳,砸壳有两种方式,一种是破解其加密算法,一种是读取内存中正在运行的元数据。

手动砸壳概念

当软件运行在内存中后,实际上内存中软件已经被解密为二进制数据,我们只需要将内存中的数据取出来,再把MachO文件的加密部分替换掉即可完成砸壳操作。

操作步骤 在越狱手机中安装正版软件。 通过ps -A | grep 软件名称 打印出运行中的正版软件路径。 # ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。 $ps -A | grep AliPay 通过scp -P 12345 root@ip地址:软件路径 ./把手机进程中的软件machO文件拷贝到电脑来。 # scp 是secure copy的简写,用于在Linux下进行远程拷贝文件的命令 # -P 是端口号的意思 # 12345 是USB映射端口号,通过Wi-Fi链接的话默认端口号是22 # root 是最高级用户 # ./ 表示电脑跟目录 $scp -P 12345 [email protected] ./.../.../AliPay ./ 通过otool -l machO文件 | grep cry 查看已加密的数据 cryptoff偏移量,和已加密过的 数据cryptsize大小 ,otool介绍。 # otool(object file displaying tool) : 针对目标文件的展示工具,用来发现应用中使用到了哪些系统库,调用了其中哪些方法,使用了库中哪些对象及属性,它是Xcode自带的常用工具。 # -l 读取load commands信息,此信息在每个machO文件中都有。用于描述数据段的基本信息 # | shell的管道符 # grep cry 匹配包含cry字段的数据 $otool -l AliPay | grep cry

打印出如下信息

cryptoff 16384 #是MachO文件已加密数据段的偏移量,而偏移量前面的都是未加密的数据段。 cryptsize 15613952 # 是MachO文件中已加密的真实数据段大小 cryptid 0 #已加密是用1表示,未加密用0表示,当然如果要修改成其他数也是可以的。一般这个参数用0&1表示就足够 使用lldb的image list指令读取软件在内存中的首地址,也就是我们读取的这个软件在内存中的位置。 # 查看库列表 $image list 重点:使用lldb的memory指令memory read --force --outfile ./decypted.bin -- binary --count 数据大小(cryptsize) 内存中软件的首地址+便宜量(cryptoff)读取内存中已被解密的二进制数据。 # memory 内存操作命令 # read 读取 # --force 表示按字节读取 # --outfile 导出文件 后面跟随文件位置和文件名及格式 bin是二进制文件 # --binary 表示是二进制文件 # --count 表示数据大小,后面跟随数据量,再跟随拷贝数据的开始位置 $memory read --force --outfile ./decypted.bin --binary --count 15613952 0x0000000104c54000+16384 重点:通过dd seek=偏移量 bs=1 conv=notrunc if=./decrypted.bin of=./Mach-O文件把已解密的数据放回原始的machO文件中。 # dd 用指定大小的文件写入另外一个文件当中去 # seek=目标文件开始写入的位置 # bs=1 表示按1个字节写 # conv=notrunc 写入后保留输出文件的原始部分 # if=./Mach-O文件 表示输入文件 # of=./Mach-O文件 表示输出的目标文件 $dd seek=16384 bs=1 conv=notrunc if=./decrypted.bin of=./AliPay

输出结果:

62914560+0 records in 62914560+0 records out 62914560+0 bytes transferred in 202.585956 secs (310557 bytes/sec) 查看machO文件是否砸壳成功otool -l machO文件 | grep cry cryptoff 16384 cryptsize 15613952 cryptid 1 仍然是1,但实际上已经砸壳成功。可以修改

通过 MachOView工具打开MachO文件,找到LC_ENCRYPTION_INFO_64,再找到Crypt ID。将其的Data值修改为0,然后保存。

加密值

通过class-dump导出头文件、成功表示砸壳成功 $class-dump -H Alipay -o ./AlipayHeaders 结束

新年快乐!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3