前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS逆向工程工具集

iOS逆向工程工具集

作者头像
100001509164
发布2022-01-20 21:33:29
8950
发布2022-01-20 21:33:29
举报
文章被收录于专栏:DevTipsDevTips

本篇文章是我在学习逆向工程时整理的逆向工程工具集 只作为记录使用 并不是详细的教程 阅读本篇教程需要你有一定逆向工程知识

一,Cycript

介绍 iOS运行时工具 可hook运行时进程 并提供了以下能力 1,开发者可以在应用运行时查看和修改应用 得到所有正在使用的类名或方法名 2,运行时修改实例变量的值 3,Method Swizzling,替换特定方法的实现 4,运行时调用任意代码 当然Cycript远不止这些 更多细节可参考如下链接: 官网 使用手册

hook SpringBaord进程实例

代码语言:javascript
复制
ps -e | grep SpringBaord(进程名称)
//ps -e 查看所有进程
cycript -p (pid) 注入进程

Cycript语法不需要声明变量类型 结束不需要有分号 其余和oc语法一致

代码语言:javascript
复制
alertView = [[UIAlertView alloc] initWithTitle:@"t"   message:@"msg" delegate:nil cancelButtonTitle:@"ok"    otherButtonTitles:nil][alertView show]

或者通过内存地址访问对象

代码语言:javascript
复制
[#0x13692f840 show] 不要忘记#

如果不知道一个对象的内存地址可以通过 choose命令找到

代码语言:javascript
复制
 choose(UIViewController)

二,OpenSSH

openSSH提供了远程登录到iPhone的功能 使用前需要在iPhone中安装OpenSSH工具 OpenSSH默认登录密码为:alpine

远程登录实例

代码语言:javascript
复制
ssh root@设备ip地址
ssh root@192.168.31.154

修改openSSH默认密码:

代码语言:javascript
复制
root# passwd  
 Changing password for root.  
New password:  
 Retype new password:  
root#  

三,theos

iOS越狱程序开发框架 简化了编写越狱程序的流程

四,lldb + debugserver

iOS远程调试APP

1、将debug server文件从手机拷贝到mac

代码语言:javascript
复制
scp root@192.168.31.154:/Developer/usr/bin/debugserver ~/

2,瘦身 压缩文件 arm64根据手机指定

代码语言:javascript
复制
lipo -thin arm64 ~/debugserver -output ~/debugserver

3,给debug server添加task_for_pid权限

代码语言:javascript
复制
下载http://iosre.com/ent.xml 放到 ~/User/用户名/执行命令 /opt/theos/bin/ldid -Sent.xml debug server

4,将debugserer复制到/usr/bin/debugserver

代码语言:javascript
复制
scp ~/debugserver root@iPhone设备ip:/usr/bin/debugserver

5,登录(ssh)手机 启动debugserver监听

代码语言:javascript
复制
debug server *:1234(监听的端口) -a "MobileSMS(模块名称)"
或者debug server *:1234 -a   /Applications/MobileSMS.app/MobileSMS(模块地址)

6, 启动lldb(Mac终端) 启动:lldb 连接接debug server :

代码语言:javascript
复制
 #lldb 执行lldb命令
#process connect connect://iOSIP:端口(该端口需要和debug server指定的端口一致)

五,dyld_decache

提取iOS系统内的二进制文件

从iOS 3.1开始,包括frameworks在内的许多库文件被放入了位于“/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armx” (dyld_shared_cache_armv7,dyld_shared_cache_armv7s,dyld_shared_cache_arm64),可使用dyld_decache将其中的二进制文件提取出来

1, 用iFunBox从手机中拷贝dyld_deache

代码语言:javascript
复制
System/Library/Caches/com.apple.dyld/ dyld_shared_cache_armx

2,下载提取工具dyld_decache

代码语言:javascript
复制
https://github.com/downloads/kennytm/Miscellaneous/dyld_decache[v0.1c].bz2下载dyld_decache

可将dyld_decache[v0.1c] 重命名为dyld_decache1

3,赋予权限

代码语言:javascript
复制
 chmod +x dyld_decache(具体路径)

4,执行提取命令

代码语言:javascript
复制
/Users/ligh/dyld_decache -o /Users/ligh/Desktop/binarys /Users/ligh/Desktop/dyld_shared_cache_armv7s(arm64)

六,dump decrypted提取头文件

class-dump无法提取加密后的App(AppleStroe下载的App)头文件 在这种情况下 需要先解密App的可执行文件 俗称 “咂壳” dumpdecrypted就是用来咂壳的工具

  1. 下载dump decrypted源码 依次执行下面的命令 mkdir Code cd Code/ git clone https://github.com/stefanesser/dumpdecrypted.git cd dumpdecrypted/ make

2.关闭所有应用 开启需要咂壳的App

代码语言:javascript
复制
ps -e //找到该App的可执行文件名称
cycript -p TargetApp // 附加该进程
[[NSFileManager defaultManager ] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask

3.拷贝dumpdecrypted.dylib 到 TaregetApp Documents 目录下

代码语言:javascript
复制
scp /Users/ligh/Desktop/Code/dumpdecrypted/dumpdecrypted.dylib root@iPhoneip:/var/mobile/Applications/XXX/Documents/

4.进入TaregetApp Documents目录

代码语言:javascript
复制
cd /var/mobile/Applications/XXX/Documents/

5.开始咂壳

代码语言:javascript
复制
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/557619D0-29AC-40DD-9266-8A0154F634AA/WeChat.app/WeChat //可执行文件地址

在当前Documents目录下会生成xx.decrypted文件 把文件拷贝到OSX 用class-dump IDA分析文件

六,iOS-Runtime-Headers

1.iOS-Runtime-Headers: https://github.com/nst/iOS-Runtime-Headers

2.OSXRuntimeBrowser: https://github.com/nst/RuntimeBrowser

更多请搜索:iOS private Headers

六,plutil

1,查看plist内容

代码语言:javascript
复制
plutil    -p /Users/ligh/Desktop/com.apple.SpringBoard.plist

2, 将plist转为xml

代码语言:javascript
复制
plutil -convert xml1 /Users/ligh/Desktop/com.apple.SpringBoard.plist

3.使用帮助

代码语言:javascript
复制
 man plutil

4.语法检查

代码语言:javascript
复制
plutil -lint /Users/ligh/Desktop/com.apple.SpringBoard.plist

由于自己能力有限 如有理解不对的地方 还望各位指正 文章将会在学习过程中持续更新

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevTips 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,Cycript
  • 二,OpenSSH
  • 三,theos
  • 四,lldb + debugserver
  • 五,dyld_decache
  • 六,dump decrypted提取头文件
  • 六,iOS-Runtime-Headers
  • 六,plutil
相关产品与服务
远程调试
远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档