在Windows环境下会有,静默安装。通过iOS应用重签名(安装app到手机上),苹果签名机制,防止未授权的应用进行安装

①获取应用ipa

②Codesign重签名

③Xcode自动签名

④Shell脚本自动重签

代码重签第三方应用:加密之后不能进行 一些逆向的分析。越狱应用->一些砸过壳的。(注意这里ipa是已经砸壳后的ipa)

签名工具:codesign

1.查看app的详细信息(bundleID, 编码格式, 权限:是否iPhone证书签名过等), 以查看App是否签名

$codesign -d -vv WeChat.app

Identifier=com.tencent.xin
Format=app bundle with Mach-O universal (armv7 arm64)
CodeDirectory v=20500 size=1016155 flags=0x0(none) hashes=15872+7 location=embedded
Signature size=4390Authority=Apple iPhone OS Application Signing
Authority=Apple iPhone Certification Authority
Authority=Apple Root CA
Info.plist entries=56TeamIdentifier=88L2Q4487U
Sealed Resources version=2 rules=26 files=1018Internal requirements count=1 size=96

2.查看本电脑所有证书

$security find-identity -v -p codesigning

 1) 698A3D09E281F93B74C937B5490DB428CDE06F04 "iPhone Distribution: Migu Comic Co., Ltd. (7WHFE6ZA29)"(CSSMERR_TP_CERT_REVOKED)2) 2DED305CF5E5F83C6EA394D6D5B9B46F6A56F19F "iPhone Developer: huan Wang (V875LC2EQ8)" (CSSMERR_TP_CERT_REVOKED)

3.查看App是否加密

1>重定向mach-o(放置代码的二进制文件),并在桌面生成文件保存 (加密可执行文件)

$ otool -l WeChat > ~/Desktop/123.text

2>查看App是否越狱

$otool -l WeChat | grep cryptid

正常App cryptid 架构  1

越狱版:   cryptid 架构 0

3>运行的时候是否需要解密:是

加密->加壳

解密->砸壳

砸壳:dump 从内存中拿出来 (越狱手机 )

签名: 密码学 HASH算法 非对称算法 签名机制越狱版:修改,调试,加插件

4.用Codesign对App进行重签名

①(打开越狱版WeChat.app,显示包内容)删除PlugIns、Watch文件夹(无法重签名)

②重签FrameWorks目录下的所有库(对Frameworks重签名)

$codesign -fs "iPhone Developer: huan Wang (V875LC2EQ8)" ConfSDK.framework

ConfSDK.framework: replacing existing signature

③给可执行文件执行权限

$chmod +x WeChat

查看可执行文件: WeChat

$ls -l WeChat

-rwxr-xr-x1 MengYustaff1418382089 28 15:06 WeChat

拷贝Demo编译的app包的embedded.mobileprovision描述文件到WeChat的app包中

新建一个工程,添加bundleId,之后点击Product下的.app显示包内容,找到embedded.mobileprovision.

拷贝此文件到重签名的文件夹里面

修改bundleId(把xcode中Demo的BundleID赋值到Wechat的info.plist文件的名字中)

⑥获取描述文件中的权限文件字段Entitlements,生成entitlements.plist

查看描述文件:

$security cms -D -i embedded.mobileprovision

搜索并复制:Entitlements 这个key和value

新建一个plist文件,粘贴进去,重命名为entitlements.plist

⑦给整个App重签名

找到entitlements.plist所在文件夹使用以下代码:

$codesign -fs "iPhone Developer: huan Wang (V875LC2EQ8)" --no-strict --entitlements=Entitlements.plist WeChat.app

WeChat.app: replacing existing signature

查看签名是否成功:

$codesign -d -vv WeChat.app

查看Authority是否修改成功:

如果是自己的证书就表明签名成功。

打包ipa并安装App

创建一个Payload文件夹,把 WeChat.app放进去(PlayLoad和plist一个层级,WeChat.app在Payload里面)

打包:

cd ..

$zip -ry WeChat.ipa Payload

编程成功为WeChat.ipa

打开Xcode -> Command+Shift+2-> 点击添加:

对越狱App进行调试

XCode->debug -> Attach to Process -> Likely Targets

通过断点调试, 注入代码,上线App没有描述文件,开发调试才有描述文件

二、利用Xcode重签名三方应用

①新建同名工程

②修改info.plist

③干掉该干掉的(删掉Watch和Plugins文件夹)

④重签名Frameworks

⑤给可执行文件执行权限

$chmod +x WeChat

新建一个项目,build 一下,将Project.app ShowInFinder

将上个路径的WeChat.app替换

调试:找到第二个Window iConsoleWindow

可以看到按钮点击的事件执行的操作、注入代码(Framework),执行HOOK操作。

三、脚本自动化签名

①创建同名文件

②添加以下脚本代码

XCode->TARGET->Build Phases->点击+号->New Run Script Phase

# ${SRCROOT} 它是工程文件所在的目录
TEMP_PATH="${SRCROOT}/Temp"#资源文件夹,我们提前在工程目录下新建一个APP文件夹,里面放ipa包
ASSETS_PATH="${SRCROOT}/APP"#目标ipa包路径
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 工程生成的APP包的路径
# TARGET_NAME target名称
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
echo "app路径:$TARGET_APP_PATH"rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"#----------------------------------------#3. 删除extension和WatchAPP.个人证书没法签名Extentionrm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"#----------------------------------------#4. 更新info.plist文件 CFBundleIdentifier
#  设置:"Set : KEY Value" "目标文件路径"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"#----------------------------------------#5. 给MachO文件上执行权限
# 拿到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. 重签名第三方 FrameWorks
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH"];then
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do#签名/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi

小建议:微信重签名不要登录微信账号, 微信检测如果bundleID不一致会被封号

为防止App重新签名,微信检测不是合法的bundleId就退出 exit

转载于:https://www.cnblogs.com/StevenHuSir/p/ReSignature.html

逆向-002-iOS重签名相关推荐

  1. iOS逆向之自动化重签名

    iOS逆向之自动化重签名 准备工作 非越狱的iPhone手机 用PP助手下载: 微信6.6.5(越狱应用) 步骤 新建工程"自动化签名",在工程目录下新建APP文件夹放置需要重签名 ...

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

    前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的.随着苹果生态圈的逐渐完善.及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大 ...

  3. 海马苹果助手ipad版_iOS逆向-ipa包重签名及非越狱手机安装多个微信!

    前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的.随着苹果生态圈的逐渐完善.及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大 ...

  4. iOS逆向(3)-APP重签名

    作为一名iOS开发者肯定知道iOS开发证书,那么证书具体是什么呢?为什么到我们本地的不是证书本身,而是一个称之为描述文件的东西.而这「描述文件」又具体是什么呢? 在知道这「描述文件」后,我们是不是可以 ...

  5. iOS开发逆向之应用重签名(下)

    本文主要介绍通过shell脚本进行应用重签名 补充知识 在利用shell脚本重签名之前,需要了解以下知识:脚本常用命令+权限相关 脚本执行相关命令 Shell是一种特殊的交互式工具,它为用户提供了启动 ...

  6. ios重签名shell脚本_iOS逆向——shell重签名及代码注入

    感谢hank老师 上一章我们讲了应用签名原理和重签名原理,不再赘述,没有看过的同学可以点这里-- 这章概述shell脚本重签名.可能有的同学认为有很多工具都能快速的帮助我们重签名实现需求,但我更希望在 ...

  7. 移动开发逆向之应用重签名(上)

    本文主要介绍重签名的几种方式,以及如何对应用进行重签名, 应用重签名 从之前<iOS逆向应用签名>中可知,签名是指原始数据的Hash值解密.那么重签名,顾名思义,就是指将原始数据的Hash ...

  8. ipa 修改服务器地址,iOS重签名 – ipa包(服务器适用)

    一.项目搭建 创建一个ios项目 image.png 为了方便可以通过修改包而修改应用的图标,项目架构中,需要单独出来图标文件 eg:icon@2x.png ,icon@3x.png (1)项目架构设 ...

  9. ios重签名shell脚本_03:双层签名和重签名流程以及shell脚本重签名

    复习 1:双向签名7不流程 2:查看签名信息和证书信息 3:查看用户权限 4:shell脚本签名 目录 1:双向签名7不流程 2:查看签名信息和证书信息 3:查看用户权限 4:shell脚本签名 正文 ...

  10. ios重签名shell脚本_IOS应用重签名(三种方法)

    终端命令(相关的一些指令) •$security find-identity -v -p codesigning列出钥匙串里可签名的证书 •$Codesign–fs"证书串"文件名 ...

最新文章

  1. 软件测试的发展空间大吗
  2. python文件IO操作
  3. 在Payara Server和GlassFish中配置密码
  4. 曾遭闪电贷攻击的Origin将重新推出稳定币OUSD
  5. 安卓3d游戏引擎_3D球闯关游戏-3D球闯关游戏安卓官方版预约 v1.2.5
  6. Operations Manager 2007 R2系列之单台服务器拓扑图监控
  7. Oracle 9i10g编程艺术 深入数据库体系结构
  8. C语言编译.bat为 .exe
  9. 怎样用c语言实现CPU超频,cpu超频教程【操作流程】
  10. c语言编写dxf文件吗,判断dxf文件的版本
  11. 小水管也要有尊严 网络限速优化实际案例
  12. 新装的mysql数据库默认密码是多少_数据库的设置及其初始密码
  13. html链接怎么恢复,Word文档中目录的超链接取消后怎么样恢复?
  14. java课后思考问题(八)
  15. 4.电子计算机的分类,公基计算机基础知识汇总40
  16. 【论文阅读】Fully Convolutional Networks for Semantic Segmentation【CVPR,PAMI】
  17. 随机点名册的简单程序
  18. 学生DW网页设计作业成品 简单的学校网站制作与实现 HTML+CSS+JS
  19. J辉摇号摇奖抽奖软件
  20. Python基础(二)完结

热门文章

  1. redis编译包下载地址 redis-6.2.6.tar.gz
  2. k8s 通用的java项目迁移流程
  3. 【收藏】Kubernetes学习之路(二十二)之Pod资源调度
  4. windows mklink创建软连接命令使用示例
  5. sealos kubernetes(k8s)高可用安装教程
  6. Java操作MongoDB代码示例
  7. union all动态表_深入窥探动态链接
  8. SpringBoot 中配置加载优先级
  9. IDEA如何重新刷新pom.xml文件重新下载
  10. JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点