代码的编译过程

简单来说我们的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的代码,脱壳操作(二)相关推荐

  1. 逆向破解思路和获取app的代码,脱壳操作(一)

    .我们的app首先是经过我们写代码.最后经过签名.打包最后生成.app文件,那么这个.app的文件在哪里呢,我用我自己的项目做个例子大致他的位置在这里: 他这个其实就是包含我们项目中的资源和我们写的代 ...

  2. 逆向破解思路和获取app的代码,脱壳操作(四)

    加壳 什么是加壳? 我们的ipa文件上传appstore,苹果会给我们做一个加密,其实我们运行在内存中的过程是一个加密的壳程序,当然在手机中我们会对他进行解密壳程序,来直接运行可执行的文件,当然苹果这 ...

  3. 逆向破解思路和获取app的代码,脱壳操作(三)

    动态库的加载 其实动态库是缓存到我们手机的某个地方,但是他是怎样和我们的app进行链接的呢? 其实是通过这个 来进行链接的,其中他里面有动态编辑器和动态加载器,来进行链接 运用官方工具拆除出UIKit ...

  4. 破解索尼PS4系列:用户代码执行(二)

    本文讲的是破解索尼PS4系列:用户代码执行(二), 本文会重点讲解如何在WebKit进程中进行代码执行. 代码执行 正如上一篇文章讲过的那样,ROP只是以一种聪明的方式执行内存中加载的现有代码,而RO ...

  5. 13-爬虫之js加密,解密,混淆,逆向破解思路

    url:https://www.aqistudy.cn/apinew/aqistudyapi.php 分析思路: 原图 现图 1,我们点击查询按钮后发现抓取到了2个一样的数据包,包含请求url和pos ...

  6. 安卓逆向Xposed HOOK TB直播APP的x-sign参数(二)

    最近学习安卓逆向,接触一下TB系的APP,了解大厂APP是做数据安全的,这篇文章主要介绍某宝直播APP的签名参数x-sign的HOOK过程,当然,其他的参数也是可以HOOK的.本文只用于学习交流,请勿 ...

  7. Android逆向笔记-使用Android Studio调试Smali代码(方式二)

    这里我使用Android Studio写了这样的一个程序: 这里我使用Android Studio写了这样的一个程序: 然后点下BUTTON后: 下面写下如何调试这种程序. 开发环境: win 10: ...

  8. 【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )

    文章目录 一.CE 中获取子弹动态地址前置操作 二.OD 中调试子弹数据 一.CE 中获取子弹动态地址前置操作 在上一篇博客 [Windows 逆向]OD 调试器工具 ( CE 工具通过查找访问的方式 ...

  9. Redis数据结构为字典Hash 的 存储、获取、删除等的操作

    一.项目用redis-learn,文章参考 Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] ...

最新文章

  1. Application Center Test知识点滴积累
  2. 实验六 html网页设计,网页设计.html · 谢泽华/面向对象与软件工程实验二:网页模仿 - Gitee.com...
  3. 【死磕Java并发】-----Java内存模型之happens-before
  4. 物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP
  5. 【汇编语言与计算机系统结构笔记08】如何实现循环(Loops),gcc历史上经历了多种转换模式(微体系结构角度解释),Switch语句,跳转表
  6. seafile Windows MySQL_seafile4.3.1 + windows 2012 server +mysql 部署记录(3)
  7. matlab实现模拟退火算法
  8. 当数据库查询速度过慢时,从哪几个方面排查解决?
  9. 服务器上系统怎么启动iis,IIS服务器如何重新启动
  10. Linux与Windows分区格式详解
  11. HTML中的表单标签
  12. 教育教培行业年终工作总结ppt制作幻灯片模板设计.pptx
  13. 计算机不定时黑屏,宏基acer 4736ZG不定时黑屏,时亮时不亮通病维修
  14. 网络下载的图始终与北京坐标有偏移,坐标对不准,用arcgis自带的WGS84与beijing54坐标转换2解决
  15. 浅析GPU通信技术(上)-GPUDirect P2P
  16. hp388服务器安装linux,HP DL388 G7做OLI,RAID,BIOS设置linux安装概要
  17. freeipa证书相关的一些命令
  18. 深度之眼(十七)——Python标准库
  19. Java第十天:多态 异常处理
  20. 瑞星宣布个人安全软件产品永久免费

热门文章

  1. CSDN参加欧洲最大开源盛会KubeCon,与全球开发者共促开源生态发展
  2. 华为机考c语言-HJ7 取近似值
  3. iPhone浏览器会把类似手机号或者电话号的一串数字的样式字体改为灰色
  4. 在CIELab颜色空间下使用八方向Sobel算子实现边缘检测
  5. 万一 Github不让用了,Gitee同步指南请收好
  6. 51单片机c语言年月日设定,综合实例:51单片机(AT89C52)万年历(温度闹钟年月日时分秒星期)...
  7. jaDate日期控件 开始日期与结束日期、日期联动
  8. 央企数字化服务转型之道
  9. ueditor编辑器自动把空格替换nbsp;的解决办法
  10. 解决 百度地图多点聚合卡顿问题