iOS-建设银行破解分享

https://i.cnblogs.com/Files.aspx

建设银行破解分享

page1image3805792 page1image3806240

问题描述一
• 在越狱手机上控制银行客户端自动获取流水,并发送到服务器。

page1image3807808 page1image3808256

问题描述二• 怎么控制

• 通过在越狱手机上部署动态库,来控制银行客户端自动获取流 水,并上传到服务器。

page1image3847680 page1image3848128

白盒与黑盒

• 从外界获取;网络截获分析;• 可执行文件与进程分析;
• 初步问题求解:黑盒失败。

page1image3809824 page1image3810272
白盒与病毒:病毒需要解决的问题

• 1)如何运行;独立进程、插件库。
• 2)如何获取想要的信息:(1)本地数据;(2)运行时hook。

page1image3811840 page1image3812288

原理一:静态机制

• 面向方面(切面)编程与插点。• 分解与hook。

page1image3813856 page1image3814304

原理二:动态机制

• Mach-O文件的数据主体可分为三大部分,分别是头部 (Header)、加载命令(Load commands)、和最终的数据 (Data)。mobileloader会在目标程序启动时,会根据指定的规则 检查指定目录是否存在第三方库,如果有,则会通过修改二进制 的loadCommands,来把自己注入进所有的app当中,然后加载第 三方库。

page1image3815872 page1image3816096 page1image3816320 page1image3816544
page1image3818112 page1image3818560

问题求解一

page1image3818784
page1image3820352 page1image3820800

问题求解二

page1image3821024
page1image3822592 page1image3823040

问题求解三

page1image3823264
page1image3824832 page1image3825280

第一步 生成动态库

必要条件1)生成动态库的开发环境;2)待破解工程的头文件;3)动态库工程生成及开发。4)打包安装。

page1image3849472 page1image3849920

1、Theos 开发环境

• TheOS被设计为一个在基于Unix平台开发IOS程序的集成开发环 境,它给我们准备好了一些代码模板、预置一些基本的Makefile脚 本,这样我们开发一个tweak就会变得方便的多,

• http://www.jianshu.com/p/751444520848 • 相当于xcode。

page1image5815632
page1image3851488 page1image3851936

2、Theos与工程生成及问题

• Project Name (required): hookApp
• Package Name :动态库的包命
• [iphone/tweak] MobileSubstrate Bundle filter 目标工程的identifier

page1image3853504 page1image3853952

• 我查找了一些资料后发现,这个错误是dpkg的锅,随着版本的升 级,打包格式发生了变化

• dpkg-deb: error: obsolete compression type 'lzma'; use xz instead • 解决方案是按以下路径找到该文件修改其内容
• /opt/theos/makefiles/package/deb.mk

• _THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= gzip

page1image3855520 page1image3855968

二、hello world!与白盒破解

必要条件

1)生成动态库的开发环境;2)待破解工程的头文件;(白盒)3)动态库工程与tweak文件。(处理这一步)4)打包安装。

page1image3857536 page1image3857984

tweak生成

• logify.pl ./xx/ViewController.h > ./Tweak.xm • Logify.pl脚本在你安装theos的时候就自带了

page1image3860000 page1image3860448

Logify

• 它是theos的一个模块,作用就是根据头文件自动生成tweak,生成 的tweak会在头文件的所有方法中注入NSLog来打印方法的入参和 出参,非常适合追踪方法的调用和数据传递

page1image3862464 page1image3862912

代码开发与logos

• Logos语法:
• http://iphonedevwiki.net/index.php/Logos

page1image3827296 page1image3827744

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

page1image3829984 page1image3830432

部署到手机

• 1)手机越狱,系统版本;• 2)时间与地区;

page1image3832224 page1image3832672

openssh
• OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协

议族可以用来进行远程控制, 或在计算机之间传送文件。• l连接到手机:ssh [email protected]

• 需要在手机上安装。• 在同一个局域网内
• 需要知道手机的地址

page1image5876992 page1image5877200 page1image5877408 page1image5877616 page1image5877824 page1image5878032 page1image5878240 page1image5878448 page1image5878656 page1image5878864
page1image3864928 page1image3865376

make package install 部署

page1image3867392 page1image3867840

三、黑盒破解与砸壳• 问题描述:

• 要破解第三方app,需要了解里面的功能,首要的是获取app的头 文件;

• 原理:可执行文件中的符号表。

page1image3869856 page1image3870304

准备工作 ps命令--进程查看工具

• ps –e
• ps aux | grep CCBMobileBank • cycript -p 1682

page1image3834688 page1image3835136

准备工作 Cycript

Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript 混合 了Objective-C与javascript语法的解释器,这意味着我们能够在一个 命令中用Objective-C或者javascript,甚至两者兼用。

• 它能够挂钩正在运行的进程,能够在运行时修改应用的很多东西

page1image3837600 page1image3838048

Cycript初探

• cy# UIApp.keyWindow.rootViewController
• #0x16012f060.recursiveDescription().toString()• [#0x15c547780 visibleViewController]

• http://www.jianshu.com/p/7c41b03c9eb3 • Cycript脚本命令的简单使用

page1image5881360
page1image3871872 page1image3872320

砸壳步骤

• 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,执行砸壳后,并拷贝出砸壳后的文件,然后完成。
• 以上就是步骤了,其实很简单,下面进行演示砸腾讯视频的壳:

page1image5826240
page1image3874336 page1image3874784

• 查看工程文档路径

• 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-

page1image3876800 page1image3877248

• 执行破解操作

• root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/4317E560-4555-40DB- A2DD-DA7BCFD5A208/CCBMobileBank.app/CCBMobileBank mach-o decryption dumper

• 移出破解文件

• scp [email protected]:/var/mobile/Containers/Data/Application/6E9CE 214-6E6E-4A4A-A5CF- DEAAC3F15D24/Documents/WeChat.decrypted /Users/zzf073/Desktop/

page1image3840960 page1image3841408

dumpdecrypted

• https://github.com/stefanesser/dumpdecrypted • makeFile编译

page1image5883648
page1image3879488 page1image3879936

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

page1image5829360 page1image5829776 page1image5829984
page1image3881952 page1image3882400

Makefile与复杂文件的组织

page1image3884416 page1image3884864

四、app动态分析与静态分析• 主要是UI分析

• 函数调用分析(待研究)
• 目标:获取当前试图对应的功能模块(类)。

page1image3886656 page1image3887104

两种解决方案

• 1)从叶子节点回溯
• 2)从根viewcontroller往下查找。

page1image3844320 page1image3844768

五、UI跳转控制与simulatetouch

• 解决方案
• UIAutomation
• simulatetouch
• iOS模拟屏幕点击事件
• SimulateKeyEvent 模拟发送物理按键事件的插件 c

page1image5885728 page1image5885936 page1image5038416 page1image5886560 page1image5886768
page1image3846784 page1image3847232

• 下载完成后,将其中的/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

page1image3849248 page1image3849696

银行破解工程结构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

page1image3851488 page1image3851936

• $(THEOS_MAKE_PATH)/tweak.mkCCBMobileBank_FRAMEWOR KS = Foundation UIKit QuartzCore Foundation CoreFoundation CoreGraphics MobileCoreServices

• #after-install::# install.exec “killall -9 SpringBoard”
• CCBMobileBank_LDFLAGS = -lsimulatetouchinclude

page1image3853952 page1image3854400

问题描述三
• 如何合理使用手机资源

• 手机上有多个银行的app,如何让多个app复用手机资源,在不同 的时间段获取流水并上传到服务器。

page1image3888896 page1image4990480 page1image3889568

部署图

page1image3891584 page1image3892032

进程调起与大数据传输

• 1)原始方案:后台运行进程;• 2)优化方案:openUrl:

page1image3856416 page1image3856864

附带工具

• Macho文件浏览器---MachOView
• http://blog.csdn.net/zhangjie1989/article/details/54614246 • github上有源代码

• iOS逆向Reveal查看任意app 的界面
• http://www.jianshu.com/p/060745d5ecc2

page1image5891968 page1image5892176 page1image5892384 page1image5892592
page1image3858880 page1image3859328

• 谢谢!

猜你喜欢

转载自www.cnblogs.com/feng9exe/p/10362786.html