iOS逆向工程(十一):iOS签名机制

2020-05-13  本文已影响0人  冰风v落叶

前言

想把逆向之后的APP安装到非越狱的手机上,就需要研究一下iOS的签名机制了,了解了原理之后,就可以使用codesign对APP的动态库、AppExtension、APP包进行重签名了,然后就可以安装到非越狱手机上了
一、签名基础知识 - 对称加密
二、签名基础知识 - 非对称加密
三、混合密码系统
混合密码系统
四、签名基础知识 - 单向散列函数
五、签名基础知识 - 数字签名
六、签名基础知识 - 证书
七、iOS签名机制
mobileprovision文件
八、iOS重签名
security cms -D -i embedded.mobileprovision > temp.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' temp.plist  > entitlements.plist
security find-identity -v -p codesigning
codesign -fs 证书ID xxx.dylib
codesign -fs 证书ID --entitlements entitlements.plist  xxx.app
九、对tweak项目进行重签名
@executable_path代表可执行文件所在的目录
@loader_path代表动态库所在的目录

将tweak_xxx.dylib注入到MachO_XXX文件中,命令如下 :
insert_dylib @executable_path/tweak_xxx.dylib MachO_XXX  --weak --all-yes

将WeChatTest.dylib注入到WeChat可执行文件中,命令如下:
insert_dylib @executable_path/WeChatTest.dylib WeChat --weak --all-yes
使用otool命令,找到WeChatTest.dylib的依赖库
otool -L WeChatTest.dylib

输出了下面这个,证明WeChatTest.dylib依赖CydiaSubstrate
/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate (compatibility version 0.0.0, current version 0.0.0)
更改WeChatTest.dylib中的CydiaSubstrate库的加载地址
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/CydiaSubstrate  WeChatTest.dylib
查看所有可用证书,选择合适的证书,进行重签名
security find-identity -v -p codesigning

先对CydiaSubstrate进行重签名
codesign -fs 2E377710143F8F007535CA3791B29FBDBF173BB9 CydiaSubstrate

再对WeChatTest.dylib进行重签名
codesign -fs 2E377710143F8F007535CA3791B29FBDBF173BB9 WeChatTest.dylib
image.png
十、总结一下

整个逆向、重签名过程的原理,其实非常简单,如下所示,假设我们要为微信开发插件

寻找A.dylib库
在手机的Device/Library/MobileSubstrate/DynamicLibraries目录中,可以找到通过tweak生成的A.dylib库

寻找CydiaSubstrate库
在手机上的Device/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate,可以找到CydiaSubstrate库

注入A.dylib到WeChat可执行文件
insert_dylib @executable_path/A.dylib WeChat --weak --all-yes WeChat
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/CydiaSubstrate  WeChatTest.dylib
查看所有可用证书,选择合适的证书,进行重签名
security find-identity -v -p codesigning

先对CydiaSubstrate进行重签名
codesign -fs 2E377710143F8F007535CA3791B29FBDBF173BB9 CydiaSubstrate

再对WeChatTest.dylib进行重签名
codesign -fs 2E377710143F8F007535CA3791B29FBDBF173BB9 A.dylib
上一篇下一篇

猜你喜欢

热点阅读