内容简介:逆向APP思路:1,代码分析 2,对Mach-O文件的静态分析MachOView、class-dump、Hopper Disassembler、ida等 3,动态调试 对运行中的APP进行代码调试 p debugserver、LLDB
逆向APP思路:1,代码分析
2,对Mach-O文件的静态分析MachOView、class-dump、Hopper Disassembler、ida等
3,动态调试 对运行中的APP进行代码调试 p debugserver、LLDB
4,代码编写
5,注入代码到APP中
6,必要时还可能需要重新签名、打包ipa
一、Mac远程登录iPhone
-
SSH (Secure Shell) 是“安全外壳协议”
OpenSSH 是SSH协议的免费开源实现 (在iPhone上通过Cydia安装OpenSSH工具(软件源http://apt.saurik.com))
可以通过OpenSSH的方式让Mac远程登录到iPhone
-
SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个WiFi下
在终端输入
ssh 账户名@服务器主机地址 复制代码
例如:
ssh root@192.168.8.157 然后输入密码(默认是alpine ) 复制代码
这种方式wifi登录,受到网速限制
- usb连接 (不需要网络,速度快,安全) 1.1 sh usb.sh (注: python2 usbmuxd-1.0.8/python-client/tcprelay.py -t 22:10010 8888:8888)
1.2 sh login.sh (注:ssh -p 10010 root@localhost)
上面的命令生效是因为已经把 usb.sh 和 login.sh 两个文件做了端口映射并放到了根目录 (映射需要usbmuxd工具包)
另外: 1.echo $PATH 查看设置的根目录,如果自己想写脚本在其他地方都能执行,也可以放在PATH路径下
2.手机和电脑能连接是因为,手机的授权文件 /var/root/.ssh/authorized_keys 中 添加了电脑的公钥 ~/.ssh/id_rsa.pub
Mac上有个服务程序usbmuxd(它会开机自动启动),可以将Mac的数据通过USB传输到iPhone
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd
下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个 python 脚本:tcprelay.py)
cgit.sukimashita.com/usbmuxd.git…
二、获取手机上软件的ipa包
-
Cycript 安装到手机上
Cycript是Objective-C++、ES6(JavaScript)、 Java 等语法的混合物,可以用来探索、修改、调试正在运行的Mac\iOS APP
官网:www.cycript.org/
通过Cydia安装Cycript,即可在iPhone上调试运行中的APP
使用: cycript -p 进程ID 比如:cycript -p NewsBoard
cycript -p 进程名称
取消输入:Ctrl + C
退出:Ctrl + D
清屏:Command + R
Github 上有基于cycript封装了一些函数 参考
@import mjcript --->MJAppId、MJFrontVC()、MJDocPath、MJAppPath 等
-
Clutch -i 获取加壳软件的appid
-
PS命令 (手机上安装adv-cmds)
ps –A 列出所有的进程
ps命令是process status
可以过滤关键词,比如 : ps -A | grep WeChat
-
也可以用github 上 工具 获取 github.com/CoderMJLee/…
MJAppTools 可以获取到架构,名称,是否加壳,安装包路径,数据库路径等
三、脱壳
- iOS中有很多好用的脱壳工具
Clutch: github.com/KJCracks/Cl…
dumpdecrypted: github.com/stefanesser…
AppCrackr、Crackulous
-
Clutch -i 获取到appid之后,Clutch -d (APP序号) 导出app包 eg: Clutch -d 1 会打印出脱壳路径
-
DYLD_INSERT_LIBRARIES 脱壳
例如:MJAppTools 获取 到 【网易新闻】 <com.netease.news> /private/var/mobile/Containers/Bundle/Application/64F0B25C-062E-4A89-8834-3F534C24E70D/NewsBoard.app
执行:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /private/var/mobile/Containers/Bundle/Application/64F0B25C-062E-4A89-8834-3F534C24E70D/NewsBoard.app/NewsBoard
获取到的脱壳文件再当前目录下 (Device/var/root)
-
查看是否脱壳
otool -l 名称 | grep crypt 例如: otool -l NewsBoard | grep crypt 查看网易新闻是否脱壳
也可以用hopper看是否脱壳
cryptid 0 为脱壳 cryptid 1 是加壳
四、反编译出头文件
-
class-dump
顾名思义,它的作用就是把Mach-O文件的class信息给dump出来(把类信息给导出来),生成对应的.h头文件
官方地址: stevenygard.com/projects/cl…
下载完工具包后将class-dump文件复制到Mac的/usr/local/bin目录,这样在终端就能识别class-dump命令了
常用格式:
class-dump -H Mach-O文件路径 -o 头文件存放目录 -H表示要生成头文件 -o用于制定头文件的存放目录
例如:当前目录下 class-dump -H NewsBoard -o Header (新建一个Header的文件夹) 这时候可以用hopper 等分析代码了
五、theos
-
安装签名工具ldid
1.先确保安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 复制代码
2.利用brew安装ldid
$ brew install ldid 复制代码
- 修改环境变量
- 编辑用户配置文件
$ vim ~/.bash_profile 复制代码
- 在.bash_profile文件后面加入下面两行
export THEOS=~/theos export PATH=$THEOS/bin:$PATH 复制代码
- 让bash_profiel配置的环境变量立即生效(或者重新打开终端)
$ source ~/.bash_profile 复制代码
-
下载theos
建议在$PATH 目录下载代码(就是刚才配置的)
$ git clone --recursive https://github.com/theos/theos.git $THEOS 复制代码
-
新建tweak 项目
- cd到放文件的目录下(比如桌面)
$ cd ~/Desktop $ nic.pl 复制代码
-
选择选项[13.] iphone/tweak
-
填写项目信息
名称 项目ID随便写, MobileSubstrate Bundle filter 写应用的id 其他回车
六、编写代码
具体情况具体分析
七、打包编译安装
当前tweak文件目录下make clean && make && make package && make install (已经写好了文件,可以直接 sh ~/tweak.sh
自己做的插件在 Device/Library/MobileSubstrate/DynamicLibraries
八、theos资料
-
目录结构: github.com/theos/theos…
-
Logoes语法: iphonedevwiki.net/index.php/L…
-
%hook %end : hook一个类的开始和结束
-
%log : 打印方法调用详情 可以再Xcode -> Window -> Devices and Simulators中查看
-
HBDebugLog 类似NSLog
-
%new: 添加一个新的方法
-
%c(className): 生成一个class对象,比如Class%c(NSObject),类似于NSStringFromClass()、objc_getClass()
-
%orig: 函数调用原来的逻辑
-
%ctor : 在加载动态库时候调用
-
%dtor : 程序退出时调用
-
logify.pl: 可以将一个头文件快速转成已经包含打印信息的xm文件
-
logify.pl xx.h > xx.xm 复制代码
1,在 UserCenterViewController.h 目录下执行
logify.pl UserCenterViewController.h > UserCenterViewController.xm
2, UserCenterViewController.xm 拷贝到Makefile(Tweak.xm) 所在目录
3, 新建一个src目录,把.xm文件放进去,修改路径 YZRongxin_FILES = $(wildcard src/*.xm)
4,不认识的类 替换为void 删除__weak 删除协议
5, 不想太详细 %log 换成NSLog(@"%@",NSStringFromSelector(_cmd));
6,HBLogDebug(@" = 0x%x", (unsigned int)r) 改为 HBLogDebug(@" = 0x%@", r)
-
-
九、MAC、IPhone 软件破解
例:PC软件破解 ./YZCTest
例:网易新闻去广告 NTESNBNewsListController hasAd
例:优酷去掉90s开头广告 XAdEnginePreAdModule setupVideoAd needAd
如果是未越狱的IPhone 则还需要打包签名等操作。
十、动态调试
十一、签名打包
-
准备一个embedded.mobileprovision文件(必须是付费证书产生的,appid,device一定要匹配)并放入到.app包中。
- 可以通过Xcode自动生成,然后再编译后的APP包中找到
- 可以去开发者网站生成证书下载
-
从embedded.mobileprovision文件中提取出entitlements.plist权限文件
- security cms -D -i embedded.mobileprovision > temp.plist
- /usr/libexec/PlistBuddy -x -c'Print :Entitlements' temp.plist > entilements.plist
-
查看可用的证书
- security find-identity -v -p codesigning
-
对.app内的动态库、AppExtension等进行签名
- codesign -f -s 证书ID XXX.dylib
-
对.app包进行签名
- codesign -f -s 证书id --entitlements entitlements.plist xxx.app
-
重签名工具
-
iOS App Signer
-
https://github.com/DanTheMan827/ios-app-signer 复制代码
-
对.app重签名,打包成ipa
-
需要再.app包中提供对应的embedded.mobileprovision文件
-
-
iReSign
- github.com/maciekish/i…
- 可以对ipa进行重签名,打包成ipa
- 需要提供embedded.mobileprovision、entitlements.plist文件的路径
-
iOS App Signer
十二、其他笔记:
Tweak 技巧
1,加载 图片资源 创建 layout 文件夹 相当于Device/Library
图片会放在 在Device/Library/PreferenceLoader/Preference
2,自己做的插件在 Device/Library/MobileSubstrate/DynamicLibraries
3,#define YZFile(path) @"/Library/PreferenceLoader/Preferences/yzxmly/" #path
4,多个文件,多个目录,引用头文件要使用路径比如 @import “abc/def/person.h”
5,路径 全路径,或者 代替 比如:src/test.xm src/ .m (中间一个空格)
6,如果自己增加类,方法属性等,要声明的话
eg:
@interface yzdefine - (void)vipReOpenPlayer; @end 复制代码
参考资料
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【Tomcat学习笔记】启动流程分析--总体流程
- 【Tomcat学习笔记】启动流程分析--总体流程
- 从0到1创建高效的产品缺陷管理流程(1):缺陷是什么? 如何建立缺陷管理流程?
- Activiti6.0教程(2) - 初始化表, 部署流程, 启动流程, 创建的表介绍
- 网卡收包流程
- Launcher 启动流程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cyberwar
Kathleen Hall Jamieson / Oxford University Press / 2018-10-3 / USD 16.96
The question of how Donald Trump won the 2016 election looms over his presidency. In particular, were the 78,000 voters who gave him an Electoral College victory affected by the Russian trolls and hac......一起来看看 《Cyberwar》 这本书的介绍吧!