一、反注入

有一天,你会发现 cycript 不好使,提示这个

iPhone:~ root# cycript -p app
dlopen(/usr/bin/Cycript.lib/libcycript.dylib, 5): Library not loaded: /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore
Referenced from: /usr/bin/Cycript.lib/libcycript.dylib
Reason: image not found
* _assert(status == 0):../Inject.cpp(143):InjectLibrary

然后你还发现 Tweak 生成的 dylib 注入不了目标进程。这时可以判断,这个应用是做了反注入的保护了。通过搜索到国外的一篇文章
https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html
了解到在可执行文件添加一个名为 __RESTRICT,__restrict 的节,可以反注入,实际的原理是在 dyld 源码里 pruneEnvironmentVariables 函数里有判断如果有这个节就会无视 DYLD_INSERT_LIBRARIES

switch (sRestrictedReason) {case restrictedNot:break;case restrictedBySetGUid:dyld::log("main executable (%s) is setuid or setgid\n", sExecPath);break;case restrictedBySegment:dyld::log("main executable (%s) has __RESTRICT/__restrict section\n", sExecPath);break;case restrictedByEntitlements:dyld::log("main executable (%s) is code signed with entitlements\n", sExecPath);break;}

通过 Xcode 里的 Other Linker Flags 设置参数,则可以添加节。

-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null

使用 MachOView 看一下效果

这时果然发现 cycript 注入不行了。

二、反反注入

我们了解了反注入的原理之后,如何反反注入呢?很简单,只需要把这个节名给改名不就行了吗?使用十六进制编辑工具打开文件,然后查找字符串改掉,再上传文件替换掉之前的应用文件就可以了。

iOS Hacker 反注入和反反注入相关推荐

  1. iOS Hacker 重签名实现无需越狱注入动态库 dylib

    iOS Hacker 重签名实现无需越狱注入动态库 dylib 一.获取 ipa 文件 iOS 的应用都是打包成 ipa 的文件格式,ipa 文件实际上就是 zip 格式的文件,通过 unzip 可以 ...

  2. iOS Hacker 动态库 dylib 注入

    iOS Hacker 动态库 dylib 注入 很多情况下我们希望自己写的代码能够在其他应用中运行,如果代码简单的话,可以写 Tweak 或者使用 Cycript.但如果代码多的话,那最好是写一个动态 ...

  3. 防止静态反编译及动态反反调试,反外挂

    发布程序前一定要做加密,不然会被破的体无完肤.推荐几款加密产品. Virbox Protector Standalone 加壳工具 效果:代码加密,防止静态反编译 加密技术:代码混淆/虚拟化/代码加密 ...

  4. unity3D 如何提取游戏资源 (反编译)+代码反编译【P.M.出品】

    转自:https://blog.csdn.net/LANGZI7758521/article/details/52291564 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资 ...

  5. 如何理解:先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补。

    对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补. 当然你也可以用先减1后取反的方法来求补码对应的原码. 对于求 ...

  6. 如何反编译,防止反编译,常见问题总结

    本文对如何反编译,防止反编译,和常遇到的问题做了个总结,并略有修改. 资源来自:http://blog.csdn.net/sunboy_2050/article/details/6727581 htt ...

  7. 常见的反爬措施:UA反爬和Cookie反爬

    本文分享自华为云社区<Python爬虫反爬,你应该从这篇博客开启,UA反爬,Cookie 特定参数反爬>,作者:梦想橡皮擦. 通过前面的爬虫程序,你或许已经注意到,对于目标站点来说,爬虫程 ...

  8. 爬虫笔记41之反爬系列四:字体反爬、JS反爬

    一.字体反爬 1.什么是字体反爬? 开发者创作了一种字体(字体代号):网页中显示的就是这种字体代号. 字体反爬也叫CSS反爬,就是因为这个字体是隐藏在我们css文件当中的一个.ttf文件. ​2.如何 ...

  9. 卷积、空洞卷积、反卷积与空洞反卷积的计算公式(全)

    前言: 经常使用的卷积有卷积.空洞卷积.反卷积与空洞反卷积的,下面总结了他们的计算公式. 一.卷积计算公式 卷积神将网络的计算公式为: N=(W-F+2P)/S+1 其中 N:输出大小 W:输入大小 ...

  10. 【反编译系列】反编译so文件(IDA_Pro)

    概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发.使用NDK开发能够编译c/c ...

最新文章

  1. LeetCode简单题之复写零
  2. Gartner预测:2019年七大AI科技趋势,百万行业将颠覆!
  3. 【LInux】查看Linux系统版本信息
  4. Android开发之大位图压缩水印处理
  5. IIS 的负载均衡【IIS7.0以上才可以使用】---- Application Request Routing(ARR)
  6. 洛谷 [P1282] 多米诺骨牌
  7. C#的winform拼数字游戏
  8. java 句柄 内存_Java内存区域学习
  9. android 观察者更新ui,android通过观察者模式实现更新UI
  10. jdbc工具类2..0
  11. android 高德获取省市,高德地图定位获取当前地址城市街道等详细信息(全部代码)...
  12. STM32F407+CubeMX-使用TIM产生PWM信号
  13. java 阻塞队列 BQ_阻塞队列 BlockingQueue的使用(二)
  14. java中servlet的请求范围_java – 如何设置servlet中并发请求数的限制?
  15. DotSpatial入门
  16. 谷歌(chrome)恐龙小游戏外挂
  17. 如何从github上下载文件并运行
  18. CAN波特率常规波特率索引值对照表及高级模式
  19. 风扇,html css3,纯CSS3实现的3D风扇动画
  20. 重新定义一个全新的区块链运行架构:他们的技术有何不同?

热门文章

  1. 2012百度实习生招聘面试题
  2. Python 批量处理特定格式文件
  3. 20165234 [第二届构建之法论坛] 预培训文档(Java版) 学习总结
  4. C语言中float double等类型在内存中的存储
  5. 暑假学习日记2013/7/21
  6. Nagios+pnp4nagios+rrdtool 安装配置nagios(一)
  7. 使用三目运算嵌套方法 或 临时变量方法: 获取三个整数中最大值的数
  8. 和 的运算(值)结果 及 Boolean结果
  9. [转载] 陈皓:一些重要的算法
  10. MySQL之深入解析自增主键为何不连续