美文网首页iOS精选
非越狱机通过Xcode对ipa进行重签名

非越狱机通过Xcode对ipa进行重签名

作者: 立志成为卓越逆向工程师的小仙女 | 来源:发表于2018-05-17 15:25 被阅读127次
  • 前提:越狱ipa包(可以在pp助手下载),Xcode,真机
    重新打包的过程大致是:

1.解压ipa包
2.删除extension和watch(如果有的话就删除了 ,因为个人账号是不能给插件签名的,至于watch就不用用了嘛)
3.修改Info.plist文件,要保持目标app包中Info.plist文件中的Bundle identifier和工程中的BundleID 一致
4.给macho文件添加执行权限
5.重签Frameworks(因为Xcode运行工程的时候是不会给frameworks重新签名的)

大致的步骤就是以上几点。接下来先给大家介绍一个用脚本快速重签的方法

1.首先新建一个Xcode工程 在工程目录下新建一个APP的文件夹 1.png

2.在工程中新增一个脚本运行 如图


2.png

然后在脚本里粘入如下代码


ASSETS_PATH="${SRCROOT}/APP"

TEMP_PATH="${SRCROOT}/temp"

TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"


#删除temp文件夹下的内容 然后新建
rm -rf "${SRCROOT}/temp"
mkdir -p "${SRCROOT}/temp"


#-----------------------------
#1.解压ipa 到temp下
unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"

#拿到解压的临时的app路径
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
#echo "路径是:$TEMP_APP_PATH"

#-----------------------------
#2. 将解压出来的app拷贝到工程下
#BUILT_PRODUCTS_DIR 工程生成包的路径
#TARGET_NAME
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
#echo "app路径是:$TARGET_IPA_PATH"

rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"


#-----------------------------
#3. 删除extension和watch
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/watch"

#-----------------------------
#4. 修改 info.plist

# 设置 "Set : KEY Value" "目标文件路径"

#/usr/libexec
# CFBundleIdentifier
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"

#-----------------------------
#5. 给可执行文件上执行权限
#拿到macho 文件路径
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#上权限
chmod +x "$TARGET_APP_PATH/$APP_BINARY"


#-----------------------------
#6.重签名第三方app 第三方的frameworks
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ] ; then
#echo "六六六:$FRAMEWORK";
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
#echo "包的路径:$FRAMEWORK"
#签名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
    done
fi
  1. 现在将你要重签的ipa包放到工程下的APP文件夹下,然后运行就ok了。

注意: 这个只是一个简单的重签,我拿微信试的ok,但是qq不行,大家也可以下载MonkeyDev进行ipa重签。

  • 补充: 如果大家觉得每次都要复制这么多在工程中很复杂,可以这么做:

1.新建一个shell.sh脚本文件,然后将上面那个脚本复制进去。

2.我们在工程中同样需要在buile Phases中添加一个run script ,在里面写上你的shell.sh的路径就ok啦,

3.最后,你还需要给脚本添加执行权限,cd 到脚本路径下 $ chmod +x shell.sh

====================分割线==================

上面讲了用脚本自动重签名,接下来说一下用命令重签
首先将我们的目标ipa解压,在Payload中拿出xxx.app文件 ,xxx.app文件在下文中统称为 目标app

1.新建一个工程,用真机运行一下,然后可以看见如下图位置有一个autoSign.app的包


3.png

2.接着我们show in finder 。在文件中用目标app替换原来的autoSign.app包,注意:我们要把目标app的名字改成autoSign.app的名字

3.现在我们已经替换了app包了,接着我们右键显示包内容,在包内我们要做以下几个事

1.修改Info.plist 中的Bundle identifier ,这个Bundle Identifier必须和工程中的一致

2.删除插件和watch包 删除PlugIns文件夹和Watch文件夹(如果有的话就删)

3.对framework进行重签名 首先用终端cd到xxx/xxx.app/Framework目录下 。
用命令 $ codesign -fs "iPhone Developer: XXX (Q6NXXXXX)" xxx.framework 其中 "iPhone Developer: XXX (Q6NXXXXX)" 是你要用的证书。
ps: 查看证书命令 $ security find-identity -p codesigning

4.手动给macho文件添加执行的权限
cd到目标app路径下 ,执行命令 $ chmod +x autoSign,工程的macho文件和我们的工程是同名的,比如我的app叫autoSign.app ,那么macho文件叫autoSign。将autoSign替换成你的目标app中的macho文件。

5.在次运行你的工程

=================分割线======================
随便说说,我也不知道怎么分类了。

  • 配置文件相关
    1. cd 到配置文件路径下
      $ cd /Users/xxx/Library/MobileDevice/Provisioning\ Profiles
      然后我们可以通过 $ls查看当前文件夹下的文件列表
    2. 查看某个配置文件的具体信息
      $ security cms -D -I xxx.mobileprovision
  • 查看签名信息
    先解压ipa包,然后cd到包里的Payload路径下 ,然后执行命令
    $ codesign -vv -d xxx.app
    我们拿出一小段来看
Executable=/Users/donkey/Desktop/微信-6.6.5(越狱应用)/Payload/WeChat.app/WeChat
Identifier=com.tencent.xin
Format=app bundle with Mach-O universal (armv7 arm64)
CodeDirectory v=20200 size=503759 flags=0x0(none) hashes=15735+5 location=embedded
Signature size=4297
Authority=(unavailable)
Info.plist=not bound
TeamIdentifier=88L2Q4487U
Sealed Resources version=2 rules=19 files=822
Internal requirements count=1 size=96

Authority字段表面没有签名信息。这是下载别人已经砸过壳的应用。大家可以自行对比一下正版的应用

  • 查看可执行文件的加密信息 可以用这个用来看app包有没有被加密
    $otool -l WeChat | grep crypt
    cryptid 0说明没有加密 cryptid 1说明加密

  • 全命令签名,不通过Xcode那种 。
    1.需要修改描述文件的指向,先通过查看描述文件的命令打开描述文件(配置文件)
    2.取出下面一段生成一个Plist文件,放在与目标app同级

    <dict>
        <key>keychain-access-groups</key>
        <array>
            <string>5AGKMCU79F.*</string>
        </array>
        <key>get-task-allow</key>
        <true/>
        <key>application-identifier</key>
        <string>5AGKMCU79F.*</string>
        <key>com.apple.developer.team-identifier</key>
        <string>5AGKMCU79F</string>
    </dict>

3.签名整个app
codesign -fs "iPhone Developer: xxx (Q6xxxxxx)" --no-strict --entitlements=en.plist xxx.app
PS: 之前的去插件、签名framework、给macho文件权限依旧要做,然后才是第2点的修改描述文件,第3点的签名整个app

4.将新签名好的app打包成ipa ,cmd + shift +2打开设备,如下图

4.png 可以将ipa运行到手机上。

================分割线====================

安装好后进行动态的调试 Debug -> Attach to Process -> 你要调试的进程

相关文章

  • 非越狱机通过Xcode对ipa进行重签名

    前提:越狱ipa包(可以在pp助手下载),Xcode,真机重新打包的过程大致是: 1.解压ipa包2.删除exte...

  • iOS重签名(Xcode签名)

    简介: 利用Xcode对越狱ipa包进行重签名相对于手动签名来说,利用Xcode签名就简单了很多也节省了不少时间。...

  • iOS逆向-ipa包重签名及非越狱手机安装多个微信

    iOS逆向-ipa包重签名及非越狱手机安装多个微信 iOS逆向-ipa包重签名及非越狱手机安装多个微信

  • iOS 重签名(Xcode)

    本文介绍, 借助 xcode 对越狱 app 进行重签名! 相比手动签名, 缩减了一部分工作! 将破壳 .ipa文...

  • 越狱ipa通过Xcode注入静态库

    上一篇文章介绍了通过Xcode对越狱ipa进行重签名。接着,签名成功后,我们肯定希望能注入一些自己的代码。接下来给...

  • APP-手动重签名探探-学习

    重签名的一般步骤:1:下载应用IPA包;(越狱包)(非越狱包需要先砸壳)2:查看越狱情况3:查看APP的签名情况 ...

  • iOS越狱包 重签名

    重签名目的:越狱包重签名运行到非越狱手机进行调试。 手动重签名大体步骤(以墨迹天气app 为例子): 1.删除插件...

  • 《iOS逆向03》app重签名

    准备工作 iPhone手机(越狱或非越狱均可) 微信app脱壳后的ipa 对ipa文件进行处理 解压ipa文件将....

  • iOS逆向之利用Xcode重签名

    iOS逆向之利用Xcode重签名 准备工作 非越狱的iPhone手机 用PP助手下载: 微信6.6.5(越狱应用)...

  • iOS数字签名及ipa重签名

    ipa重签名是指对已经打包好的ipa,利用新的证书重新签名。 ipa重签名作用: 作用一:有时候公司在进行软件开发...

网友评论

    本文标题:非越狱机通过Xcode对ipa进行重签名

    本文链接:https://www.haomeiwen.com/subject/uaubdftx.html