ios中怎么修改依赖ios dylib注入的路径

你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
在最新的IOS9中的依赖库里面没有让导入的依赖库比如libz.dylib、libconv.dylib等,请问怎么解决啊?
只是后缀名变了,libz.tdb
这些一样的
这个文档可以看一下,里面有Xcode更新后的一些特性。
真正可以用的。
要回复问题请先或
浏览: 15624
关注: 3 人
知识价值的认可,源自您的赞赏
扫描二维码,你的支付将由imGeek代收后转给对方
感谢您的赞赏
一个开放、互助、协作、创意的社区
一个开放、互助、协作、创意的社区
京ICP备号-34045人阅读
ios逆向(70)
转:/inject-with-njb.html
简单来说就是通过修改可执行文件的Load Commands,增加一个LC_LOAD_DYLIB,写入dylib路径。这样程序执行的时候就会来编译这个LC_LOAD_DYLIB找到要注入的dylib,从而进行加载。
新建一个简单的testApp,编译生成,使用MachoOView查看结构如下:
可以知道程序默认加载了Foundation、libobjc.A.dylib、libSystem.B.dylib、UIKit。
那么可以通过编辑可执行文件加上一个自己的dylib。
struct ProgramVars
& & const void* & & mh;
& & int*& & & & & & NXArgcPtr;
& & const char*** & NXArgvPtr;
& & const char*** & environPtr;
& & const char**& & __prognamePtr;
__attribute__((constructor))
static void EntryPoint()
& & NSLog(@&我就是那个注入的动态库文件咯&);
static __attribute__((constructor))
void dylib_init(int argc,
const char* argv[],
const char* envp[],
const char* apple[],
const struct ProgramVars* vars){
& & &NSLog(@&exe name:%s&,*vars-&__prognamePtr);
& & &NSLog(@&%@&,@&args======&);
& & &for(int i
& argc; i++){
& & & & &NSLog(@&%s&,argv[i]);
& & &int i =
& & &NSLog(@&%@&,@&envp======&);
& & &while (envp[i]
!= NULL) {
& & & & &NSLog(@&%s&,envp[i]);
& & & & &i++;
并指定文件路径为可执行文件路径下,所以需要拷贝注入的dylib文件到.app目录下:
然后使用codesign对libinject.dylib,以及可执行文件重新签名。
安装运行于非越狱机上:
查看设备Log,可以看到dylib的初始化函数已经执行:
本文链接:
转载提示:除非注明,AloneMonkey的文章均为原创,转载请以链接形式注明作者和出处。谢谢合作!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:934636次
积分:12163
积分:12163
排名:第1145名
原创:226篇
转载:615篇
评论:128条
(10)(13)(5)(13)(5)(28)(11)(7)(36)(30)(30)(28)(36)(17)(27)(18)(11)(5)(11)(20)(20)(3)(16)(22)(18)(11)(14)(10)(17)(8)(10)(6)(7)(7)(5)(8)(2)(11)(14)(3)(3)(2)(22)(3)(7)(24)(7)(9)(14)(3)(3)(1)(2)(1)(1)(5)(4)(9)(2)(5)(3)(1)(2)(2)(4)(1)(5)(3)(2)(2)(1)(1)(1)(2)(1)(4)(2)(3)(4)(25)(13)(7)(24)(31)(1)23114人阅读
技术(242)
Xcode7中 Link Binary With Libraries 没有 .dylib库,只能找到对应的 .tbd,但不能代替使用,通过查找资料,尝试后得到以下两种解决方法。
方法1. (heqin测试可行)在项目Target中的Link Binary With Libraries 手动添加
首先点击 “+”
显示搜索添加页面,在这里如果搜索之前的libsqlite3.dylib是搜不出来ios9之前的。所以需要点击 Add Other,出现文件目录页面,正常情况这里去通过Finder也是找不到老的libsqlite3.dylib文件的,因为这个文件是隐藏掉的。所以需要按
快捷键 CMD+Shift+G (Go to the folder),输入/usr/lib后,进入隐藏的界面,然后添加你需要的 *.dylib,如libsqlite3.dylib文件。即可。
方法2(尚未测试).Build Phases 配置
project -& Build Settings -&Linking -& Other Linker Flag
添加 -l& 所需 dylib 的名称 &
例如:libsqlite3.dylib
-& -lsqlite3
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1340522次
积分:12777
积分:12777
排名:第1022名
原创:139篇
转载:167篇
评论:182条
(1)(1)(2)(4)(1)(2)(1)(7)(4)(1)(1)(9)(16)(2)(2)(5)(4)(2)(2)(2)(1)(3)(3)(6)(6)(14)(11)(28)(10)(20)(37)(4)(10)(9)(2)(6)(10)(9)(5)(1)(1)(4)(3)(1)(9)(1)(1)(4)(13)(1)(4)16:36:18 UTC
正好看到有同学提问
砸壳这些不表了,我们拿Wechat来实验把.
设备 iPhone6 9.0.2
1.编写dylib
我是用theos里面的library来创建的
创建后代码:
__attribute__((constructor)) static void entry() {
NSLog(@"hook success");
然后make编译成 hook1.dylib
2. 修改微信的二进制文件,加入LC_LOAD_DYLIB
我是用/KJCracks/yololib这个工具一键注入的
ScholardeMacBook-Pro:WeChat.app scholar$ yololib WeChat hook1.dylib
15:16:02.766 yololib[] dylib path @executable_path/hook1.dylib
15:16:02.767 yololib[] dylib path @executable_…
我重签名,重打包,做微信助手,但我知道,我妈死了 ------微信助手们
DISCLAIMER: 以下全部内容来自数月前我在我自己的小团队的私有Repo里写下的简单教程,不保证能解决所有情况的问题。无料转载死妈,威锋死妈。
一来呢使用theos编译出的dylib,一来默认的是老的对齐iOS9 AArch64会挂,新版theos没试,也许新的模版解决了??
然后theos编译会插入一个LC_LOAD_DYLIB用于确保dyld动态加载了libsubstrate
越狱情况下并没有什么问题,非越狱下很显然没有这个文件,导致dyld抛出异常,crash app
解决方案也很简单,将这个LC的类型从LC_LOAD_DYLIB修改成LC_LOAD_WEAK_DYLIB(弱加载,dyld不会因为弱加载的库不存在终止加载过程)
然后手动注入一个新的LC_LOAD_DYLIB,指向proper signed libSubstrate
很遗憾,就做了些微小的工作,谢谢大家
Theos现在提供了更简单的方案,参见/t/theos-dylib/4327/3
16:52:27 UTC
此处应有dyld源码相关部分解析,theos的patch
但我懒得写: )
04:28:51 UTC
Theos编译的dylib不是依赖substrate的么?在非越狱机上也可以用吗?
04:36:19 UTC
我只是举个例子:) 重点在改原来的LC那里。
很遗憾,就做了一些微小的工作
04:38:35 UTC
我现在的做法是用Theos当编译环境,手动打Patch脚本重签名。上次他们看到利用mach里的某个嘘~~~API在const里设置TEXT到RW,调用MS后写回,他们说不越狱成功了,我没试验。
I don't even
01:57:07 UTC
these编译的dylib依赖了 libsubstrate,所以 需要lib substrate拷贝一份 重签 当然 dylib引用lib substrate的路径也需要改
01:58:03 UTC
可用,亲测
06:07:27 UTC
不行,确实是依赖substrate的框架
09:56:11 UTC
想问问大神,如何将LC_LOAD_DYLIB改成LC_LOAD_WEAK_DYLIB?用二进制改吗?LC_LOAD_WEAK_DYLIB的编码是多少。。。
10:02:51 UTC
MachOView或者自己写Parser。值翻头文件。这个问题目前有更简单的解决方案了
10:12:40 UTC
通过头文件找到了,谢谢!
16:30:36 UTC
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib tweak.dylib
14:08:13 UTC
dylib内调用的其它资源文件路径怎么修改,\Library\PreferenceLoader\Preferences。求教,非常感谢
16:34:39 UTC
写在app本身的沙盒里啊。或者动态释放1366人阅读
杂项(12)
编程杂谈(19)
mac系统使用(11)
有些dylib库并没有设置到/Framework里,当你将这些dylib添加到程序包中时,也无法正确调用。有一个解决方法:
用otool -L OOXX.dylib 查看链接位置
install_name_tool -id @executable_path/../Frameworks/OOXX.dylib OOXX.dylib&
修改dylib自身的链接位置。
这样你就可以通过将OOXX.dylib复制到程序的Frameworks目录去调用了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:600382次
积分:7003
积分:7003
排名:第3140名
原创:121篇
转载:175篇
评论:128条
(9)(2)(3)(9)(5)(12)(1)(11)(4)(4)(5)(12)(12)(4)(15)(21)(8)(2)(2)(3)(2)(14)(2)(3)(3)(2)(1)(6)(4)(2)(5)(1)(32)(21)(3)(8)(9)(3)(1)(7)(6)(6)(11)(1)(3)(1)(1)(4)}

我要回帖

更多关于 修改编译ios上的dylib 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信