iOS逆向之代码注入

题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟~~

准备工作

代码注入思路:

dylb会加载Frameworks中所有的动态库,那么在Frameworks中加一个自己的动态库,然后在自己动态库中hook和注入代码

动态库存放的位置:Frameworks

找到可执行文件WeChat

用MachOView打开可执行文件WeChat,在Load Commands里可以查看到动态库

步骤:

1、新建Framework

TARGETS添加:

2、新建一个WJHook类

3、想实现刚加载就要运行,代码就要写在load方法里

4、为工程添加依赖关系

  • 在代码注入targets的Build Phases中添加Copy Files

  • 在Copy Files中选择Frameworks

  • 添加WJHookFrameWork

    5、编译一下,在app包的位置查看

    显示包内容,在Frameworks中查看

    由上可知,WJHookFrameWork已经加入成功

6、运行,并没有成功,没有执行load里的代码

原因:用MachOView打开可执行文件WeChat,在Load Commands找不到WJHookFrameWork

7、将WJHookFrameWork写入MachO文件

需要用到工具:yololib

因为经常会用到这个工具,建议将它放到 /usr/local/bin

显示隐藏文件,可以使用

$defaults write com.apple.finder AppleShowAllFiles -bool true

$KillAll Finder

这条命令来显示。同时,将 true 改成 false, 就可恢复隐藏状态。

  • 解压微信越狱包

  • 将WeChat.app显示包内容,找到WeChat可执行文件

    增加执行权限:chmod +x WeChat

  • 写入WeChat可执行文件:

    yololib WeChat Frameworks/WJHookFrameWork.framework/WJHookFrameWork

    "Frameworks/WJHookFrameWork.framework/WJHookFrameWork"路径是指WJHookFrameWork可执行文件的路径

  • 检查MachO文件的Load Commands里是否有WJHookFrameWork

    如图,加入成功。

  • 删除原来的微信-6.6.5(越狱应用).ipa,打包Payload

    zip -ry WeChat.ipa Payload

    将WeChat.ipa放入APP目录,删除其他文件夹

    8、运行,成功!

原文地址:https://www.cnblogs.com/WinJayQ/p/9032739.html

时间: 2024-10-10 04:56:40

iOS逆向之代码注入的相关文章

iOS - 逆向 - Objective-C代码混淆 -confuse.sh文件写法

class-dump可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄. 所以,我们迫切的希望混淆自己的代码. 混淆的常规思路 混淆分许多思路,比如: 1)花代码花指令,即随意往程序中加入迷惑人的代码指令 2)易读字符替换 等等 防止class-dump出可读信息的有效办法是易读字符替换. Objective-C的方法名混淆 混淆的时机 我们希望在开发时一直保留清晰可读的程序代码,方便自己. 同时,希望编译出来的二进制包含乱七八糟的混

iOS开发技术之应用代码注入防护

1.介绍在应用开发过程中,我们需要考虑到应用安全的问题.而应用安全的问题涉及到很多方面的内容,随着iOS系统的不断更新,我们需要在防护的手段上发生一些改变.如下所示:[1]防止静态分析:代码混淆.逻辑混淆[2]防止重签名:应用ID 检测.代码的HASH检测 2.代码的注入方式代码的注入的方式大致分为两类:[1]越狱注入:通过修改DYLD_INSERT_LIBRARIES环境变量的值,来插入动态库并执行[2]非越狱注入:直接将自定义的Framework库或者dylib/tbd库打包进入App并重新

iOS逆向开发(1):基础工具 | ssh | scp | socat

小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情(虽然有时很痛苦),而且还可能给你带来收益. 在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位.目标代码的调试,再到注入微信的实战示例. 本文介绍iOS逆向的基础工具的使用. 硬件方面,你需要一台iOS设备(iphone/itouch/ipad,以下

IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴 首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,

第二个注入实例之代码注入

依旧是用远程注入线程的方式注入代码执行. 代码与数据得分两部分写入目标程序,然后再执行. 贴出实例 //CODETYPE.H #include "windows.h"typedef struct _THREAD_PARAM{    FARPROC pFunc[2];               // LoadLibraryA(), GetProcAddress()    char    szBuf[4][128];          // "user32.dll",

[iOS逆向实战 之三]函数之基本类型(int)参数传递

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 在这[iOS逆向实战 之一]中讲到函数调用的参数传递通过r0-r3来实现,这篇帖子我们来验证下.先看一个4个参数的函数代码: main方法简单调用compute方法,先看main的汇编代码: 明显可以看出,参数值1,2,3,4分别传递给r0-r3,然后通过b调用函数 compute,接着看下compute的汇编代码: 最后一行 是返回到 调用者的下一行,之前帖子已经学过了,前面面3条代注释如下: add r0, r1  

ARM汇编基础(iOS逆向)

1. ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文总结了ARM汇编的基础知识,如果你想了解更多,请参考狗神的小黄书<iOS逆向逆向工程>或ARM官方手册. 1.1 寄存器,内存和栈 在ARM汇编里,操作对象是寄存器,内存和栈 ARM的栈遵循先进后出,是满递减的,向下增长,也就是开口向下,新的变量被存到栈底的位置;越靠近栈底,内存地址越小 一个名为stackPointer的寄存器保存栈的栈底地址,成为栈地址. 可以把一个变量给

HTML5 App的代码注入攻击

原文链接 摘要 基于HTML5的手机app(译者注:以下简称HTML5 app)越来越流行了, 在大多数情况下它比native应用更容易适配不同的移动操作系统.它开发起来很方便,可以使用标准的web技术,包括HTML5.JavaScript 和  CSS,也可以借助一些现有的开发框架(比如PhoneGap)和手机操作系统进行交互. 众所周知,JavaScript是非常容易遭受代码注入攻击的,因此我们计划对HTML5 app进行一次系统的研究以评估基于web技术开发的手机app安全性是否可靠.成果

HTML5移动应用——小心代码注入风险

近日在加州举行的移动安全技术大会上,Syracuse大学的研究者的研究报告显示HTML5移动应用可能会给企业带来新的安全风险.开发者的错误可能导致HTML5应用自动执行攻击者通过Wifi蓝牙或短信发送的恶意代码. ICSA实验室的移动安全专家Jack Walsh指出,恶意代码可以偷偷窃取受害者的敏感信息并发送给攻击者,这针对HTML5的恶意代码还能偶像蠕虫一样传播,自动向受害者的联系人发送包含恶意代码的短信. HTML5移动应用的安全缺陷危害很大,根据Gartner的报告,由于跨平台的特性,HT