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

  • 前提:越狱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 -> 你要调试的进程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容