2,在桌面新建的文件夹中把描述文件和IPA放置进去,如下: image2018-10-24 11_5_4.png 3,cd到对应文件目录下 image2018-10-24 11_6_57.png 4,选择对应证书 image2018-10-24 11_8_18.png 6,发布到蒲公英或其他平台验证重签名的正确性。 这是我找到的最简单的重签名方式,如果还有其他的方式可以共同讨论。
前言 本篇文章虽然是介绍iOS开发中ipa包的签名原理。但因为签名涉及到密码学中的概念。在了解签名之前,我们需要明确一些概念。 App分发方式 Apple根据iOS App安装渠道来源的不同,对App的签名方式有所区别。通常App的安装渠道可以分为: App Store。应用市场分发。对Apple用户分发的线上正式的App。 企业内部分发。可以直接安装企业证书签名后的App。不限制用户数量。 AD-Hoc。企业内部分发的限制版。限制App安装设备的数量,通常用于内部小范围使用或测试,使用场景有限。 Xcode。开发者分发。 Apple会对我们提审App Store的App进行重签名,所谓重签名就是对开发者提审的ipa包中的App进行重签,重签发生在Apple的后台,使用的Apple自己的私钥。 [App Store签名] 线下分发 上面App Store对应用市场分发的App进行签名,很好的保证了App的安全性。
导航栏的 Products 目录中看到 .app 文件,extension target 对应的是 .appex 文件,所以归档出 .xcarchive 并不是一个非常复杂的操作,只需要编译、链接、简单的签名 ,要 processing,一堆原生动态库加上第三方 framework 还要轮着等着签名。 这些保证了 ipa 文件不能被模拟器装上(没有 x86 架构),只能被 iOS 设备安装,你买的应用程序发给别人,别人并不能直接装上。从兔兔助手等平台安装的盗版软件一定是被重新签名过的。 (由于 ipa 文件上传到 iTunes Connect 之后,还会被重新处理,所以个人尚且不知道后续的处理过程还进行过怎样的签名工作) 所以 ipa 文件才可以作为加密文件放在软件商店,xcarchive 从 Xcode 产出的 ipa 到用户下载的 ipa ? 如图是我开发的一款软件打包过程的各个状态,可以看到压缩状态的 ipa 文件是体积最小的。
关于Ipa-medit Ipa-medit是一款针对重签名IPA的内存搜索和修复工具,该工具可以在不越狱的情况下使用,主要针对的是移动端游戏安全测试领域。 --HEAD usbmuxd $ brew install --HEAD libimobiledevice $ brew install --HEAD ideviceinstaller 工具安装 源码安装 广大研究人员可以直接从该项目的【Releases页面】下载源码,并将其存储至$PATH路径下。 /Payload/tap1000000.app/tap1000000" -id="jp.hoge.tap1000000" 目标.ipa文件必须使用本地设备已安装的证书进行有效签名,如果你想要修改第三方应用程序的内存 ,请使用ipautil之类的工具进行重新签名: $ ipautil decode tap1000000.ipa # unzip $ ipautil build Payload # re-sign
最近有一个需求,就是提供无签名的ipa包,然后再通过第三方对ipa包进行企业签,达到不需上App Store就可以快速分发供用户下载使用。 平常我们都是习惯Xcode通过开发者账号进行有签名的打包。 那么如何做到无需开发者账号进行无签名打包ipa包呢? command+B进行编译,也可以用xcode的product image.png 最后 image.png 这里右击选择进去finder 然后创建个Payload文件夹,然后进行复制进去,然后压缩完后,改成ipa
在这篇文章中,我们将演示如何重新对一个iOS应用程序签名,并生成一个IPA文件,然后将其部署到我们的测试设备上。 代码签名 代码签名作为一种安全保护措施,苹果要求所有在其设备上运行的代码都必须由他们信任的开发人员进行数字签名,而数字(代码)签名的签名的工作方式与SSL证书在网站上的工作方式类似。 苹果-iOS应用程序唯一有效的签发商 苹果的代码签名支持站点:【传送门】 iOS代码签名指南:【传送门】 从IPA中提取应用程序Bundle 首先,我们手上需要有一个.ipa文件。 但你如果现在尝试侧加载IPA文件的话,可能会失败,因为此时提供的配置文件不会将我们的设备作为App运行的有效设备,因此我们才需要对目标App进行重签名。 创建一个“空白”的应用程序 现在,创建一个空的Xcode项目,这个App的授权应该跟我们需要重签名的App的授权内容相同。重签名后的结果就是,我们将得到两个功能相同但签名不同的应用程序。
有的iOS app可以通过App Store或者其他手机助手app直接下载安装,而其他未签名app则需要通过电脑手动安装到手机中。 之前我们一直使用cydia impactor进行安装,现在由于apple服务器端内调整,导致通过cydia impactor无法安装ipa。 因此我们则需要使用AltDeploy代替cydia impactor来安装ipa。接下来将介绍安装流程。 13.3进行越狱 Chimera可以对iOS12-12.2、12.4进行越狱 Electra可以对iOS11.0-11.4.1进行越狱 以上三款工具在越狱过程都可以尝试使用 如果已经越狱完成,需要安装未签名 ipa,则直接拖动ipa到AltDeploy界面,点击start即可开始安装,如下图所示 安装完以后,打开手机在设置->通用->描述文件与设备管理中选择 开发者应用 ,信任这个应用证书即可,如下图所示
Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup ) ---- 文章目录 Android 事件分发 系列文章目录 一、ItemTouchHelper 事件分发源码分析入口 二、ItemTouchHelper 绑定 RecyclerView 源码分析
EventBus的线程分发中介绍了EventBus中发布和订阅方法设置了ThreadMode之间的关系,最终表格如下: 发布线程 Android主线程 非Android主线程,线程a POSTING Android 在EventBus源码分析之订阅流程和EventBus源码分析之发布流程中已经介绍了EventBus的发布-订阅模型的源码,最终通过反射调用了订阅者的方法,而根据订阅方法@Subscribe注解中ThreadMode 本篇博客将从线程分发的角度分析EventBus的源码。 总结 经过对线程分发部分代码的分析,可以看到会在四处地方调用invokeSubscribe()方法进行具体的订阅方法执行,分别是: 与post在同一线程中,同步调用; 在HandlerPoster的handleMessage
34B66A6E-F3C7-4D02-A508-14F271CD3445.png A6A6A7B1-1CC9-4820-9F87-D513CA85F93C.png 48C9C055-75B4-4B0B-9D82-8F8A699AA1C1.png 449E97DB-A71E-4E1E-8915-7E9A6BFFE07D.png D397C456-AD94-42DB-8123-74FB3CF44FAB.png
几个方法 事件分发过程中,涉及的主要方法有以下几个: dispatchTouchEvent: 用于事件的分发,所有的事件都要通过此方法进行分发,决定是自己对事件进行消费还是交由子View处理 onTouchEvent 表示消费当前事件 onInterceptTouchEvent: 是ViewGroup中独有的方法,若返回true表示拦截当前事件,交由自己的onTouchEvent()进行处理,返回false表示不拦截 我们的源码分析也主要围绕这几个方法展开 源码分析 Activity 我们从Activity的dispatchTouchEvent方法作为入口进行分析: public boolean dispatchTouchEvent(MotionEvent View 现在回头看上一节的第2、3步,不管是对子View分发事件,还是将事件分发给ViewGroup自身,最后都殊途同归,调用到了View的dispatchTouchEvent,这就是我们这一节分析的目标 总结 通过上面的源码解析,我们可以总结出事件分发的整体流程: ?
随着苹果对于企业分发证书的频繁吊销和日益收紧,代签名行业也随之迭代出了黑科技,即所谓的超级签名源码系统。 签名原理 签名原理其实就一句话,使用了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设备进行分发。 既然签名用是 Ad-Hoc ,那么 Ad-Hoc 所具有的优劣势也一并继承了下来: 优势: 1、直接分发,安装即可运行,不需要用户做企业证书的信任操作 2、目前稳定,不会有证书吊销导致的业务风险(后续苹果政策风险非常高 再生成签名用的描述文件,给IPA签名。 然后iPA传Server,使用itms-services方式让用户下载。
向那些曾经无法跨越的鸿沟敬上----吾王已至 事件分发.png 开篇先明确几点 1.有三东西挺长的,又长得挺像,看着晃眼且心烦,文中以下简写为: |-- 分发 dispatchTouchEvent = 由于消费在分发之前,消费是不会阻碍分发的,但分发会影响消费 老婆(Activity):给你100块当做一月生活费,这叫分发dispatchTouchEvent,生活费相当MotionEvent 你( 上面如果理清楚,使用方面应该就没问题了 二、源码查看 1.Activity和ViewGroup中的dispatchTouchEvent dispatchTouchEvent.png ---->[Activity ViewGroup添加View,追踪了一下: addView(一参)-->addView(两参)-->addView(三参)-->addViewInner-->addInArray 小结: 总的来说源码看下来 ,感觉view事件分发机制也并不像我想像中的那么难 在自定义View中至多也就是ViewGroup+子View的触摸事件协调,Activity一般不参和 Activity的事件分发实质上是DecorView
注:本文解析的源码基于 API 25,部分内容来自于《Android开发艺术探索》。 之前重新梳理了一下 View 事件的分发,所以为了有所记录,下定决心要写一篇关于 View 事件分发的博客。 事件分发可以说分为三个部分, 一个是 Activity 然后是 ViewGroup 最后是 View 我们在分析事件分发时,也会依次按照这三个部分来入手。 否则就直接将事件分发给子 View 了。 References Android中MotionEvent的来源和ViewRootImpl Android 事件分发机制源码攻略(二) —— ViewGroup篇
使用自签名证书内部分发 iOS7 应用 iOS 升级到 7.1 之后, 原来通过网页分发应用的方法出现错误, 提示 “无法安装应用, 服务器证书无效”, 原来 iOS 要求必需将 plist 文件放到 https 服务器上 (对 ipa 文件无要求), 在 StackOverFlow 上有网友将 plist 文件放到 dropbox 或者 skydrive 上的方法, 国内也可以将 plist 文件放到 不过如果是通过内网分发 iOS 应用的话, 修改起来还是挺麻烦的, 最好还是使用自签名的证书实现 https 链接, 这样对内网分发应用方式的修改最小。 , 需要手工在 iOS 设备以及分发服务器上安装。 现在在 iOS 设备上通过 https 访问原来的分发应用的网页, 就应该可以下载了。 参考资料: 在iOS上使用自签名的SSL证书 IIS8中使用OpenSSL来创建CA并且签发SSL证书
爱思助手 IPA 签名功能常见问题汇总使用 Apple ID 签名 IPA 文件也就是常说的“个人签”,很多小伙伴在使用Apple ID签名时,有时候会出现证书申请失败,或者签名失败,这类报错信息。 IPA 签名工具目前没有自动安装功能,签名完成后需要手动“打开已签名 IPA 位置”,然后双击使用爱思助手安装。7.安装 IPA 文件失败提示“设备未越狱”是什么原因? 图片原因一:该 IPA 文件签名使用的设备标识和当前安装的设备不一致。使用 A 设备标识签名的 IPA 文件无法安装到 B 设备上。 第三种情况,提示签名失败,错误码44。图片这是因iPA包构架问题导致无法进行签名,可以尝试下载未被改动过的原始iPA包重新签名。第四种情况,提示签名失败,错误码45。 图片这个也是iPA包有问题的原因,因为IPA包里面的文件可能存在非法字符比如中文字符这些,可以尝试下载未改动过的原始iPA包,然后重新签名。
在上一篇中,我们看到lifecycleService监听了很多electron原生的事件, 监听了之后,一旦事件被触发,vscode是怎么派发这些事件的呢? 在入口程序的startup方法中(src\vs\code\electron-main\main.ts),有这么一句:
一、带着问题出发 我们手触摸点击屏幕的时候,触摸、点击事件是如何分发的呢? 布局中的控件是如何获取到按键事件的呢? 二、说在前面 下面来大体说下事件分发涉及到的几个类和相关方法: Android的事件分发顺序是:Activity ----> ViewGroup ----> View 涉及到的几个重要方法 dispatchTouchEvent(); onInterceptTouchEvent(); onTouchEvent(); dispatchTouchEvent负责事件的分发 下面就分别来看下事件在Activity、ViewGroup、View 的分发机制。 intercept 值为false,则会遍历ViewGroup的子view,如果是处于子View的触摸区域,则会调用子view的dispatchTouchEvent(); 五、View的事件分发机制
Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发 】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) ---- 文章目录 Android 事件分发 系列文章目录 前言 一、获取子组件 二、当前遍历的子组件的事件分发 三、ViewGroup 事件分发相关源码 /view/ViewGroup.java 三、ViewGroup 事件分发相关源码 ---- ViewGroup 事件分发相关源码 : 下面的代码中 , 逐行注释分析了 ViewGroup 的 dispatchTouchEvent
Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发 】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析 方法返回值含义 二、记录被消费的触摸事件 三、触摸事件没有被消费的调用链分析 四、触摸事件被拦截的调用链分析 五、ViewGroup 事件分发相关源码 六、View 事件分发相关源码 总结 前言 接上一篇博客