iOS工作生活iOS逆向

iOS逆向流程

2019-07-01  本文已影响15人  eagleyz

本文首发于个人博客

准备:完美越狱iPhone

逆向APP思路:1,代码分析

​ 2,对Mach-O文件的静态分析MachOView、class-dump、Hopper Disassembler、ida等

​ 3,动态调试 对运行中的APP进行代码调试 p debugserver、LLDB

​ 4,代码编写

​ 5,注入代码到APP中

​ 6,必要时还可能需要重新签名、打包ipa

一、Mac远程登录iPhone

ssh 账户名@服务器主机地址

​ 例如:

ssh root@192.168.8.157  然后输入密码(默认是alpine )     

​ 这种方式wifi登录,受到网速限制

​ 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

https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz

二、获取手机上软件的ipa包

​ ps命令是process status

​ 可以过滤关键词,比如 : ps -A | grep WeChat

三、脱壳

​ Clutch:https://github.com/KJCracks/Clutch

​ dumpdecrypted:https://github.com/stefanesser/dumpdecrypted/

​ AppCrackr、Crackulous

四、反编译出头文件

五、theos

/usr/bin/ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install)"

​ 2.利用brew安装ldid

$ brew install ldid
  1. 编辑用户配置文件
$ vim ~/.bash_profile
  1. 在.bash_profile文件后面加入下面两行
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
  1. 让bash_profiel配置的环境变量立即生效(或者重新打开终端)
$ source ~/.bash_profile
  1. cd到放文件的目录下(比如桌面)
$ cd ~/Desktop
$ nic.pl
  1. 选择选项[13.] iphone/tweak

  2. 填写项目信息

​ 名称 项目ID随便写, MobileSubstrate Bundle filter 写应用的id 其他回车

六、编写代码

​ 具体情况具体分析

七、打包编译安装

​ 当前tweak文件目录下make clean && make && make package && make install (已经写好了文件,可以直接 sh ~/tweak.sh

​ 自己做的插件在 Device/Library/MobileSubstrate/DynamicLibraries

八、theos资料

九、MAC、IPhone 软件破解

​ 例:PC软件破解 ./YZCTest

​ 例:网易新闻去广告 NTESNBNewsListController hasAd

​ 例:优酷去掉90s开头广告 XAdEnginePreAdModule setupVideoAd needAd

​ 如果是未越狱的IPhone 则还需要打包签名等操作。

十、动态调试

十一、签名打包

十二、其他笔记:

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

参考资料

iOS应用逆向工程(第2版)

iOS底层原理班

上一篇下一篇

猜你喜欢

热点阅读