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

• 谢谢!

最新文章

  1. 集成ShareSDK,分享成功后QQ和空间回调不执行的可能原因
  2. DataTable
  3. win7-VS2010-IIS网站的发布问题
  4. 快速解决mysql Lost connection to MySQL server at 'reading initial communication packet及can't connect to mysql server on 'localhost'
  5. IE中console的正确使用方法
  6. 【英语】Bingo口语笔记(8) - 爆破音的发音技巧
  7. WPF 之 鼠标双击事件
  8. github pages
  9. UE设置 去掉bak备份文件
  10. POJ3126 Prime Path(BFS)
  11. 纯css实现多标签浮动居中(任意个数)
  12. submit()提交表单时,显示警示框
  13. caffe实现GAN
  14. 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)
  15. 基于 Django的Ajax实现 文件上传
  16. redis的持久化方案
  17. Windows10 VS2017 C++ xml解析(tinyxml2库)
  18. Centos7安装32位库用来安装32位软件程序
  19. C# 两个datatable中的数据快速比较返回交集或差集
  20. Elasticsearch 入门教程

热门文章

  1. Linux进程管理之“四大名捕”
  2. [转]玩转Windows服务系列——命令行管理Windows服务
  3. Jsp&Servlet入门级项目全程实录第1讲
  4. GIT 基础-基础命令
  5. 认识Groovy
  6. sublime 在Mac终端下设置快捷打开方式
  7. python-Django框架url分发实现返回时间
  8. drupal7 为视图添加 过滤标准 内容类型
  9. JavaScript的进阶之路(七)客户端JavaScript知识点总结
  10. MySQL允许root远程访问