App Extension的脱壳办法

App Extension的脱壳办法

从app store下载的app和app extension是加过密的,可以通过otool查看:

$ otool -l binary_name | grep crypt

cryptoff  16384
cryptsize 294912
cryptid   1

iPhone applications的解密办法

dumpdecrypted 是个出色的app脱壳开源工具,它的原理是:将应用程序运行起来(iOS系统会先解密程序再启动),然后将内存中的解密结果dump写入文件中,得到一个新的可执行程序。

iPhone app extensions的特别之处

  • app extension虽是独立进程,但不可独立运行
  • app extension的进程中,写权限被严格控制

基于以上两点,dumpdecrypted 无法实现对iPhone app extensions的脱壳。

iPhone app extensions的解密办法

通过对dumpdecrypted稍作修改,更改其写入dump结果的path,变通启动方式就可实现对app extension的解密,详见:Carina’s dumpdecrypted

使用方法很简单,用微信的Share Extension为例

1、本地编译好 dumpdecrypted.dylib
2、指定作用的Extension Bundle

{
	Filter = {
		Bundles = ("com.tencent.xin.sharetimeline");
	};
}

3、将 dumpdecrypted.plist 和 dumpdecrypted.dylib 拷贝至越狱机的 /Library/MobileSubstrate/DynamicLibraries/ 下
4、利用系统相册启动微信的Share Extension

当微信的Share Extension被启动时,解密插件自动工作。 值得注意的是,如果你的越狱机是armv7架构,那么也就只dump armv7那部分; 如果越狱机是arm64架构,那么也就只dump arm64那部分。So,最后你需要:

$ lipo -thin armv7 xxx.decrypted -output xxx_armv7.decrypted
$ lipo -thin armv64 xxx.decrypted -output xxx_arm64.decrypted

来得到干净的dump结果

时间: 2024-10-05 17:05:33

App Extension的脱壳办法的相关文章

如何让App Extension访问Cocoapods引入的第三方库

步骤一: 选中项目,点击App Extension target(这里是Today Extension) 步骤二:在右边的Tabs中,选择Build Settings,在过滤框中输入"bridg" 在弹出的输入框中,输入你的桥接文件名(这个文件是将Objective-C写的文件暴露给Swfit使用,如果没有这个文件名,可以新建一个头文件,名字随意,一般命名规则是项目名-Bridging-Header.h). 步骤三:选择项目(PROJECT),在右边的Tabs中,选择Info,在Con

App Extension编程指南(iOS8/OS X v10.10):常见问题的处理方案

本节由CocoaChina翻译组成员DevTalking (博客)翻译自苹果官方文档App Extension Programming Guide--Handling Common Scenarios一节,敬请勘误.欢迎加入我们的翻译小组,详情请参看:CocoaChina编辑和译者招募! 当编写自定义代码以执行app扩展任务时,你可能需要处理一些其他多种类型扩展也会出现的情况.在这一章节中,我们将帮助你如何应对和处理这些常见的问题. 使用内嵌框架共享代码 你可以创建一个内嵌框架,用于在应用扩展和

揭秘 iOS App Extension 开发 —— Today 篇

转自:http://www.cocoachina.com/ios/20160619/16760.html 本文授权转载,作者:Cyandev(简书) 从 iOS 8 开始,苹果引入了全新的 App Extension,涉及到方方面面,例如今日面板.键盘.内容拦截器.分享动作等.但是官方对于 App Extension 的开发指南少之又少,入门起来会有很多坑.所以我准备写一系列文章来帮助大家更好入门 App Extension 的开发,也能少走弯路. 何为 App Extension? 顾名思义,

关于android studio 出现Error:Execution failed for task ':app:buildInfoDebugLoader'.的解决办法

今天在使用androidstudio的过程中,改了代码点击运行的时候发现android studio总是报 Error:Execution failed for task ':app:buildInfoDebugLoader'.> Exception while doing past iteration backup : Source /home/ruiqin/AndroidStudioProjects/DouTuGaoShou/app/build/intermediates/builds/de

iOS App Extension入门

转自简书:http://www.jianshu.com/p/8cf08db29356 iOS 10推出了很多新功能,其中有几个高调的变化:通知栏更加实用,电话可以防骚扰,iMessage变得更加有趣和强大,还有就是新一轮的Siri调戏.这 些重大功能让我们更加期待iOS10正式上线!作为开发者,我们也需要不断为自己充电,想把握先机?让我们先来看看它们的基本-App Extension 介绍 应用扩展(App Extension)从iOS 8正式登录iOS平台,开发者可以通过应用扩展为用户提供系统

iOS开发日记55-通知栏扩展(App Extension)

今天博主有一个App Extension的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 总览 扩展 (Extension) 是 iOS 8 和 OSX 10.10 加入的一个非常大的功能点,开发者可以通过系统提供给我们的扩展接入点 (Extension point) 来为系统特定的服务提供某些附加的功能.对于 iOS 来说,可以使用的扩展接入点有以下几个: Today 扩展 - 在下拉的通知中心的 "今天" 的面板中添加一个 widget 分享扩展 - 点击分享按钮后将网

App Extension访问Cocoapods引入的第三方库

步骤一: PROJECT --info --configurations,将对应的Debug和Release 设置成pods.debug和pods.release    步骤2:编译一下(本人遇到的问题是真机调试可以跑起来了,但是打包Archive给别人测试的时候出现下面的错误:在App Extension 出现library not found for-lMasonry  错误. 解决方式:TARGETS--选择AppExtension --Build Phases 添加对应的.a文件

和大家讨论一下推广自己公司App的一个小办法

为了避免广告嫌疑,本文不出现公司或App名称,仅仅和大家讨论一下. 今年国庆假期我拿着公司的工牌给妹妹看,上面有下载我们公司App的二维码. 妹妹问我:“我扫描二维码,你有奖励吗?” 我说没有.然后她说:“那我就不扫了.” 之前听同事提起过,在苹果商店或者安卓应用商店下载我们公司的APP,公司就要出3.4块钱,既然公司也想要推广App,让更多人下载,那么如果普通人推广也能获得报酬,岂不是三赢:对公司.推广者.新用户都用好处. 具体的办法如下: 根据用户账号生成一个二维码,通过该二维码下载的新注册

转-android.app.Fragment$InstantiationException 解决办法

在实际的开发中,我遇到过两次android.app.Fragment$InstantiationException报错. 其中一次报错,根据报错提示 “make sure class name exists, is public, and has an empty constructor that is public” ,若Fragement定义有带参构造函数,则一定要定义public的默认的构造函数.即可解决此问题.如果硬要携带参数进去,可以通过Intent结合Bunble的方式携带进去. 第