逆向破解思路和获取app的代码,脱壳操作(二)
代码的编译过程
简单来说我们的oc经过编译会生成汇编语言,汇编语言经过编译最后生成机器语言,其中机器语言和汇编语言是一一对应的也就是说,我们的机器语言可以反编译生成汇编语言。
但是从上图中也看到了,我们的汇编是不能生成我们唯一的oc语言的,怎么办?其实我们可以借助工具来将我们的汇编生成oc,相当于是伪代码,这样的话我们可以大概来研究一下别人的代码,如果我们完全100%还原oc代码个人觉得也不太现实,因为苹果的加密机制我觉得做的还是很ok的。
借助Hopper Disassembler来将我们的汇编代码进行还原。
1.将我们的Mach-o文件拖拽到Hopper Disassembler中,需要等待进度条完毕。
2.展示结果如下
5.相信大家按部就班的做就可以了,一些快捷键的展示如下:
7.按照上边我给你介绍的文章,我已经成功把我这个项目的(.m)文件全部导出来了,如下图:
首先xcode报错我们不用管,但是很多人还是想说 还是看不懂,怎么还是汇编感觉,其实个人觉得完全拆成oc是不现实的,我们可以通过他的大概加上我们的猜测进行猜测。(我们之前已经找到.h文件了,再次找到了.m文件加上我们的项目经验来进行破解),比如我想查看一个对象怎么实现的
结合自己的经验进行分析。
动态库共享缓存
1.运用之前的方法,我们连接上我们的手机,查看UIKit这个库位置
但是我们找啊找 也找不到我们的UIKit这个库,那他到底去哪里了呢? 其实我们苹果从ios3.1开始就使用动态库共享缓存的机制。具体大致的意思是:他会把我们苹果工程师(我说的是苹果的,不是我们现在的普通程序员)写好的UIKit、CoreGraphics库等等集中放到手机中的一个地方,然后有dyld动态链接。那么他这样做的明显的一个好处就是:节省我们手机的内存,更大的提高开发效率。用一张图来解释就是:
那么他的动态库的缓存文件的在哪里? 他在
/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX 顺便给大家说下ios架构的问题
现在我们来找一下UIKit库所在的位置,我们找到这个
我们可以看到很大的两个包一个是64位架构的,一个是armv7s架构的,我现在xcode是12的 大家根据上图,知道为什么没有armv7架构的了吧,因为5基本没人用了,xcode也基本对他不支持了。(顺便说一句,用ifunbox将这个包导入到mac,不用直接拖那样会少很多东西,点击这个包右键->拷贝到mac) 将第一个包拖进去安装好的Hopper Disassembler,直接输入UIkit,选择framework那个
然后直接next,点击ok
接下来就是漫长的等待中,直到他下面出现完成的语句。
但是如果你是Hopper Disassembler3的话 他是解析不出来的,Hopper Disassembler4是可以的。
逆向破解思路和获取app的代码,脱壳操作(二)相关推荐
- 逆向破解思路和获取app的代码,脱壳操作(一)
.我们的app首先是经过我们写代码.最后经过签名.打包最后生成.app文件,那么这个.app的文件在哪里呢,我用我自己的项目做个例子大致他的位置在这里: 他这个其实就是包含我们项目中的资源和我们写的代 ...
- 逆向破解思路和获取app的代码,脱壳操作(四)
加壳 什么是加壳? 我们的ipa文件上传appstore,苹果会给我们做一个加密,其实我们运行在内存中的过程是一个加密的壳程序,当然在手机中我们会对他进行解密壳程序,来直接运行可执行的文件,当然苹果这 ...
- 逆向破解思路和获取app的代码,脱壳操作(三)
动态库的加载 其实动态库是缓存到我们手机的某个地方,但是他是怎样和我们的app进行链接的呢? 其实是通过这个 来进行链接的,其中他里面有动态编辑器和动态加载器,来进行链接 运用官方工具拆除出UIKit ...
- 破解索尼PS4系列:用户代码执行(二)
本文讲的是破解索尼PS4系列:用户代码执行(二), 本文会重点讲解如何在WebKit进程中进行代码执行. 代码执行 正如上一篇文章讲过的那样,ROP只是以一种聪明的方式执行内存中加载的现有代码,而RO ...
- 13-爬虫之js加密,解密,混淆,逆向破解思路
url:https://www.aqistudy.cn/apinew/aqistudyapi.php 分析思路: 原图 现图 1,我们点击查询按钮后发现抓取到了2个一样的数据包,包含请求url和pos ...
- 安卓逆向Xposed HOOK TB直播APP的x-sign参数(二)
最近学习安卓逆向,接触一下TB系的APP,了解大厂APP是做数据安全的,这篇文章主要介绍某宝直播APP的签名参数x-sign的HOOK过程,当然,其他的参数也是可以HOOK的.本文只用于学习交流,请勿 ...
- Android逆向笔记-使用Android Studio调试Smali代码(方式二)
这里我使用Android Studio写了这样的一个程序: 这里我使用Android Studio写了这样的一个程序: 然后点下BUTTON后: 下面写下如何调试这种程序. 开发环境: win 10: ...
- 【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )
文章目录 一.CE 中获取子弹动态地址前置操作 二.OD 中调试子弹数据 一.CE 中获取子弹动态地址前置操作 在上一篇博客 [Windows 逆向]OD 调试器工具 ( CE 工具通过查找访问的方式 ...
- Redis数据结构为字典Hash 的 存储、获取、删除等的操作
一.项目用redis-learn,文章参考 Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] ...
最新文章
- CF1148F - Foo Fighters
- POJ Mayor's posters——线段树+离散化
- PAT甲级1084 Broken Keyboard:[C++题解]字符串处理、双指针算法
- 数据库访问 mysql连接库--查询
- 什么是堆栈?内存中划分出按FIL0方式操作的特殊区域,叫做堆栈
- vhs预设_使用Linux将VHS数字化,创建Bash完成脚本,Ansible,家庭自动化等
- CarbonData:大数据融合数仓新一代引擎
- 如何在Linux中的virtualbox中安装Windows 10
- [论文翻译] Active Learning by Feature Mixing
- 10. Javascript DOM节点
- Ubuntu server配置远程VNC服务
- mysql超市管理系统怎么写_vb6.0+mysql编写的小型超市管理系统
- Win10设置内存压缩
- 设置在线html视频几倍数播放,HTML5倍数功能视频播放器(加速2倍,1.5倍播放)...
- LogAnomaly: Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs
- 基于MES的生产车间管理信息系统
- PHP如何实现嵌入网页功能思路
- Neo4j CQL简介
- 内容领先地位无法撼动,腾讯音乐与环球续约将共建新厂牌
- 点击一次变色,再点击变回原色