iOS-建设银行破解分享
https://i.cnblogs.com/Files.aspx
建设银行破解分享
问题描述一
• 在越狱手机上控制银行客户端自动获取流水,并发送到服务器。
问题描述二• 怎么控制
• 通过在越狱手机上部署动态库,来控制银行客户端自动获取流 水,并上传到服务器。
白盒与黑盒
• 从外界获取;网络截获分析;• 可执行文件与进程分析;
• 初步问题求解:黑盒失败。
白盒与病毒:病毒需要解决的问题
• 1)如何运行;独立进程、插件库。
• 2)如何获取想要的信息:(1)本地数据;(2)运行时hook。
原理一:静态机制
• 面向方面(切面)编程与插点。• 分解与hook。
原理二:动态机制
• Mach-O文件的数据主体可分为三大部分,分别是头部 (Header)、加载命令(Load commands)、和最终的数据 (Data)。mobileloader会在目标程序启动时,会根据指定的规则 检查指定目录是否存在第三方库,如果有,则会通过修改二进制 的loadCommands,来把自己注入进所有的app当中,然后加载第 三方库。
问题求解一
问题求解二
问题求解三
第一步 生成动态库
必要条件1)生成动态库的开发环境;2)待破解工程的头文件;3)动态库工程生成及开发。4)打包安装。
1、Theos 开发环境
• TheOS被设计为一个在基于Unix平台开发IOS程序的集成开发环 境,它给我们准备好了一些代码模板、预置一些基本的Makefile脚 本,这样我们开发一个tweak就会变得方便的多,
• http://www.jianshu.com/p/751444520848 • 相当于xcode。
2、Theos与工程生成及问题
• Project Name (required): hookApp
• Package Name :动态库的包命
• [iphone/tweak] MobileSubstrate Bundle filter 目标工程的identifier
• 我查找了一些资料后发现,这个错误是dpkg的锅,随着版本的升 级,打包格式发生了变化
• dpkg-deb: error: obsolete compression type 'lzma'; use xz instead • 解决方案是按以下路径找到该文件修改其内容
• /opt/theos/makefiles/package/deb.mk
• _THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= gzip
二、hello world!与白盒破解
必要条件
1)生成动态库的开发环境;2)待破解工程的头文件;(白盒)3)动态库工程与tweak文件。(处理这一步)4)打包安装。
tweak生成
• logify.pl ./xx/ViewController.h > ./Tweak.xm • Logify.pl脚本在你安装theos的时候就自带了
Logify
• 它是theos的一个模块,作用就是根据头文件自动生成tweak,生成 的tweak会在头文件的所有方法中注入NSLog来打印方法的入参和 出参,非常适合追踪方法的调用和数据传递
代码开发与logos
• Logos语法:
• http://iphonedevwiki.net/index.php/Logos
Makefile文件与打包
• THEOS_DEVICE_IP = 192.168.1.100 • ARCHS = armv7 arm64
• TARGET = iphone:latest:8.0
• include $(THEOS)/makefiles/common.mk • TWEAK_NAME = Xtest
• Xtest_FILES = Tweak.xm
• Xtest_FILES += FTWebViewController.m
部署到手机
• 1)手机越狱,系统版本;• 2)时间与地区;
openssh
• OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协
议族可以用来进行远程控制, 或在计算机之间传送文件。• l连接到手机:ssh root@10.10.215.119
• 需要在手机上安装。• 在同一个局域网内
• 需要知道手机的地址
make package install 部署
三、黑盒破解与砸壳• 问题描述:
• 要破解第三方app,需要了解里面的功能,首要的是获取app的头 文件;
• 原理:可执行文件中的符号表。
准备工作 ps命令--进程查看工具
• ps –e
• ps aux | grep CCBMobileBank • cycript -p 1682
准备工作 Cycript
Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript 混合 了Objective-C与javascript语法的解释器,这意味着我们能够在一个 命令中用Objective-C或者javascript,甚至两者兼用。
• 它能够挂钩正在运行的进程,能够在运行时修改应用的很多东西
Cycript初探
• cy# UIApp.keyWindow.rootViewController
• #0x16012f060.recursiveDescription().toString()• [#0x15c547780 visibleViewController]
• http://www.jianshu.com/p/7c41b03c9eb3 • Cycript脚本命令的简单使用
砸壳步骤
• iOS逆向工程(简单利用"dumpdecrypted"给ipa砸壳)• http://blog.csdn.net/app_ios/article/details/52583687
• 二、总结步骤
• 1,设备中打开需要砸壳的APP。
• 2,SSH连接到手机,找到ipa包的位置并记录下来。
• 3,Cycript附加到进程,找到App的Documents文件夹位置并记录
下来。
• 4,拷贝dumpdecrypted.dylib 到App的Documents 的目录。
• 5,执行砸壳后,并拷贝出砸壳后的文件,然后完成。
• 以上就是步骤了,其实很简单,下面进行演示砸腾讯视频的壳:
• 查看工程文档路径
• cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
• #"file:///var/mobile/Containers/Data/Application/D41C4343-63AA- 4BFF-904B-2146128611EE/Documents/"
• //破解文件部署
• Connection to 10.10.213.176 closed.
• /var/mobile/Containers/Data/Application/B01FE602-A5DD-4E0F-
• 执行破解操作
• root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/4317E560-4555-40DB- A2DD-DA7BCFD5A208/CCBMobileBank.app/CCBMobileBank mach-o decryption dumper
• 移出破解文件
• scp root@10.10.213.176:/var/mobile/Containers/Data/Application/6E9CE 214-6E6E-4A4A-A5CF- DEAAC3F15D24/Documents/WeChat.decrypted /Users/zzf073/Desktop/
dumpdecrypted
• https://github.com/stefanesser/dumpdecrypted • makeFile编译
Class-dump
• class-dump -H WeChat.decrypted -o ./h
• Class-dump 安装和使用方法
• http://blog.csdn.net/msyqmsyq/article/details/51363659
• class-dump -H /Users/zzf073/Desktop/FqlMerchantX\ /Payload/FqlMerchantX.app -o /Users/zzf073/Desktop/FqlMerchantX/heads
• class-dump -H /Users/zzf073/Desktop/jianshe/jianshebank/Payload/CCBMobileBank. app -o /Users/zzf073/Desktop/jianshe/heads
Makefile与复杂文件的组织
四、app动态分析与静态分析• 主要是UI分析
• 函数调用分析(待研究)
• 目标:获取当前试图对应的功能模块(类)。
两种解决方案
• 1)从叶子节点回溯
• 2)从根viewcontroller往下查找。
五、UI跳转控制与simulatetouch
• 解决方案
• UIAutomation
• simulatetouch
• iOS模拟屏幕点击事件
• SimulateKeyEvent 模拟发送物理按键事件的插件 c
• 下载完成后,将其中的/usr/lib/libsimulatetouch.dylib拷贝 到$THEOS/lib/libsimulatetouch.dylib下,
• int r = [SimulateTouch simulateTouch:0 atPoint:touchPoint withType:STTouchDown];
• r = [SimulateTouch simulateTouch:r atPoint:touchPoint withType:STTouchUp];
• CCBMobileBank_LDFLAGS = -lsimulatetouch
银行破解工程结构makefile
• THEOS_DEVICE_IP = 10.10.165.152ARCHS = armv7 arm64TARGET = iphone:latest:8.0include $(THEOS)/makefiles/common.mkTWEAK_NAME = CCBMobileBankCCBMobileBank_FILES = Tweak.xm TWTextView.m CCBKeyboardManager.m CCBTraceRecordEngine.m LocalDataManager.m RecordPageModel.m CEToastView.m CEJson.m BIDObjectToNsDictionary.m
• $(THEOS_MAKE_PATH)/tweak.mkCCBMobileBank_FRAMEWOR KS = Foundation UIKit QuartzCore Foundation CoreFoundation CoreGraphics MobileCoreServices
• #after-install::# install.exec “killall -9 SpringBoard”
• CCBMobileBank_LDFLAGS = -lsimulatetouchinclude
问题描述三
• 如何合理使用手机资源
• 手机上有多个银行的app,如何让多个app复用手机资源,在不同 的时间段获取流水并上传到服务器。
部署图
进程调起与大数据传输
• 1)原始方案:后台运行进程;• 2)优化方案:openUrl:
附带工具
• Macho文件浏览器---MachOView
• http://blog.csdn.net/zhangjie1989/article/details/54614246 • github上有源代码
• iOS逆向Reveal查看任意app 的界面
• http://www.jianshu.com/p/060745d5ecc2
• 谢谢!
iOS-建设银行破解分享的更多相关文章
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)
距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大 ...
- iOS开发技术分享(1)— iOS本地数据存储
iOS开发技术分享(1)— iOS本地数据存储 前言: 我本是一名asp.net程序员,后来加入了iOS游戏开发队伍,到现在也有一年多的时间了.这一年来,每天都干到2.3点钟才睡觉,不为别的,只为了学 ...
- fir.im Weekly - 8 个不能错过的 iOS / Android 技术分享
本期 fir.im Weekly 收集了 2 月下旬新鲜出炉的 iOS /Android 技术分享.源码等,iOS 中图片技术的解压缩.逆向实战.iOS SDK 实践,Android架构思考.Andr ...
- iOS ShareSDK 三方分享/登录使用
原文 http://www.cnblogs.com/CoderAlex/p/4860352.html 一: 快速集成 1.前言 作为现在App里必不可少的用户分享需要,社交化分享显然是我们开发app里 ...
- iOS 友盟分享
iOS 友盟分享 这个主要是提到怎样通过友盟去自己定义分享的步骤: 一.肯定要去友盟官网下载最新的SDK包,然后将SDK导入到你的project目录里面去. 二.注冊友盟账号.将你的APP加入到你的账 ...
- android/IOS各平台分享链接/跳转链接配置说明(备用)
Android: [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 微信/朋友圈 //设置 ...
- 谈谈我的iOS学习及分享
iOS可以说是最近几年比较热门和高速发展一个系统,因此iOS开发也变得火热.越来越多的程序员都转向了iOS开发,每个人的学习方法都不同,分享下我的学习经历和见解吧.我之前学习过C++和Qt,Java也 ...
- iOS 社交化分享功能
iOS 开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享 如下图 我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn 一,注册账号 去 ...
- [转]如何通过 App Store 审核(iOS 开发者经验分享)
CocoaChina交流社区曾经发起一个主题讨论,关于iOS开发者遇到审核失败的原因及解决办法的,有价值的回复内容如下: wubo9935 App中设计的图标与Apple原生图标类似,Apple原生图 ...
随机推荐
- [转]使用ASP.NET Web API 2创建OData v4 终结点
本文转自:http://www.cnblogs.com/farb/p/ODataAspNetWebAPI.html 开放数据协议(Open Data Protocol[简称OData])是用于Web的 ...
- C#基础笔记(第十二天)
1.复习里氏转换:1).子类可以赋值给父类(如果有一个方法需要一个父类作为参数,我们可以传第一个子类对象)2).如果父类中装的是子类对象,则可以将这个父类强转为子类对象 is和as判断转换成功失败 P ...
- as3中xml文件的加载和读取
---恢复内容开始--- as代码如下: xml如下: 总结: 用URLReuqest对象加载xml的url 创建一个URLLoader对象,将1中的URLRequest指定给他 给URLLoader ...
- golang学习之defer
golang中的defer通常用于执行一些资源释放性操作,比如open/close.connect/disconnect.lock/unlock等,对defer理解主要记住以下三点: 1.defer ...
- Hadoop源码学习笔记(2) ——进入main函数打印包信息
Hadoop源码学习笔记(2) ——进入main函数打印包信息 找到了main函数,也建立了快速启动的方法,然后我们就进去看一看. 进入NameNode和DataNode的主函数后,发现形式差不多: ...
- [PHP] PHP数组的实现哈希表(HashTable)结构
PHP中使用最为频繁的数据类型非字符串和数组莫属,使用哈希表实现的PHP数组.1.数据结构:保存哈希表容器,保存数据的容器2.哈希函数实现:需要尽可能的将不同的key映射到不同的槽(bucket)中, ...
- 基于easyUI实现登录界面
此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. 准备工作 1. 点击此下载相关文件,并把文件放到 ims 工程对应的文件夹下 二. 相关文件介绍 1. login.jsp: ...
- BZOJ2960:跨平面
题面 BZOJ Sol 对该平面图的对偶图建图后就是最小树形图,建一个超级点向每个点连 \(inf\) 边即可 怎么转成对偶图,怎么弄出多边形 把边拆成两条有向边,分别挂在两个点上 每个点的出边按角度 ...
- 全面认识Docker和基本指令
Docker逐渐成为虚拟化技术的佼佼者,Java架构师之路接下来会推出一系列的Docker相关技术文章,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引 ...
- Java设计模式—备忘录模式
个人感觉备忘录模式是一个比较难的设计模式,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法. 定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以 ...