- 浏览: 25754 次
最新评论
http://blog.csdn.net/yy405145590/article/details/41282669
主要思路是替换掉在mono里image.c的mono_image_open_from_data_with_name函数,HOOK掉加载DLL的地方,实现读取自定义的DLL文件。
检查发现在Xcode工程里的libiPhone-lib.a里存在mono的库文件,在libiPhone-lib.a下有两个CPU架构的库
[html] view plaincopy在CODE上查看代码片派生到我的代码片
lipo -info libiPhone-lib.a
Architectures in the fat file: libiPhone-lib.a are: armv7 i386
使用
[html] view plaincopy在CODE上查看代码片派生到我的代码片
lipo libiPhone-lib.a -thin armv7 -output libiPhone-lib.arm
解压出armv7的库文件
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -t libiPhone-lib.arm
[html] view plaincopy在CODE上查看代码片派生到我的代码片
filterscpuimplvectordata.o
filterscpuimplwarp.o
filterscpumipmaps.o
filterscpupassvectordata.o
filterscpupvrtc.o
filterscpufxmapsbuffer.o
filterscpufxmapsmain.o
filterscpufxmapsdrawjob.o
filterscpufxmapsdrawqueue.o
filterscpufxmapsjob.o
filterscpufxmapspool.o
filterscpufxmapsthread.o
parsebitmap.o
parseblend.o
parseblur.o
parsechannelsshuffle.o
parsecommon.o
parsecontext.o
parsedata.o
parsedirectionalmotionblur.o
parsedirectionalwarp.o
parseemboss.o
parsefxmaps.o
parsefxmapssetcell.o
parsegradientmap.o
parsegrayscaleconversion.o
parsehsl.o
parselevels.o
parsemotionblur.o
parsenormal.o
parsesharpen.o
parsetransformation2d.o
parseuniformcolor.o
parsevectorgraphicsdata.o
parsewarp.o
apicontext.o
apihandle.o
apiversion.o
libCrashReporter-iphoneos.a-armv7-master.o
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -t libiPhone-lib.arm | grep image.o
[html] view plaincopy在CODE上查看代码片派生到我的代码片
image.o
可以看到armv7下确实有image.o的模块
解压出image.o模块
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -x libiPhone-lib.arm image.o
用十六进制工具搜索
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
mono_image_open_from_data_with_name 替换成 mono_image_open_from_data_with_xxxx
自己编译一个imagehook.c的文件生成imagehook.o,内容如下
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
#include <stdio.h>
extern int *
mono_image_open_from_data_with_xxxx(
char *data, unsigned int data_len,
int need_copy,
int *status,
int only, const char *name);
int *
mono_image_open_from_data_with_name(
char *data, unsigned int data_len,
int need_copy,
int *status,
int only, const char *name)
{
printf("call mono_image_open_from_data_with_name 0x%x 0x%x 0x%x 0x%x 0x%x %s", (int)data, (int)data_len, need_copy, (int)status, only, name);
return mono_image_open_from_data_with_xxxx(data, data_len, need_copy, status, only, name);
}
将image.o 和 imagehook.o重新打包进libiPhone-lib.arm
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -r libiPhone-lib.arm image.o
ar -q libiPhone-lib.arm imagehook.o
重新生成libiPhone-lib.a
[html] view plaincopy在CODE上查看代码片派生到我的代码片
lipo libiPhone-lib.a -replace armv7 libiPhone-lib.arm -output libiPhone-lib.a_01
这样用新生成的libiPhone-lib.a去链接应用程序会发现调用到了我们自己的函数。
但是你会发现都是没用的,因为mono在IOS下是FULL AOT模式编译的,每个脚本dll会生成对应的.s汇编代码直接连接到可执行文件里面.
主要思路是替换掉在mono里image.c的mono_image_open_from_data_with_name函数,HOOK掉加载DLL的地方,实现读取自定义的DLL文件。
检查发现在Xcode工程里的libiPhone-lib.a里存在mono的库文件,在libiPhone-lib.a下有两个CPU架构的库
[html] view plaincopy在CODE上查看代码片派生到我的代码片
lipo -info libiPhone-lib.a
Architectures in the fat file: libiPhone-lib.a are: armv7 i386
使用
[html] view plaincopy在CODE上查看代码片派生到我的代码片
lipo libiPhone-lib.a -thin armv7 -output libiPhone-lib.arm
解压出armv7的库文件
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -t libiPhone-lib.arm
[html] view plaincopy在CODE上查看代码片派生到我的代码片
filterscpuimplvectordata.o
filterscpuimplwarp.o
filterscpumipmaps.o
filterscpupassvectordata.o
filterscpupvrtc.o
filterscpufxmapsbuffer.o
filterscpufxmapsmain.o
filterscpufxmapsdrawjob.o
filterscpufxmapsdrawqueue.o
filterscpufxmapsjob.o
filterscpufxmapspool.o
filterscpufxmapsthread.o
parsebitmap.o
parseblend.o
parseblur.o
parsechannelsshuffle.o
parsecommon.o
parsecontext.o
parsedata.o
parsedirectionalmotionblur.o
parsedirectionalwarp.o
parseemboss.o
parsefxmaps.o
parsefxmapssetcell.o
parsegradientmap.o
parsegrayscaleconversion.o
parsehsl.o
parselevels.o
parsemotionblur.o
parsenormal.o
parsesharpen.o
parsetransformation2d.o
parseuniformcolor.o
parsevectorgraphicsdata.o
parsewarp.o
apicontext.o
apihandle.o
apiversion.o
libCrashReporter-iphoneos.a-armv7-master.o
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -t libiPhone-lib.arm | grep image.o
[html] view plaincopy在CODE上查看代码片派生到我的代码片
image.o
可以看到armv7下确实有image.o的模块
解压出image.o模块
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -x libiPhone-lib.arm image.o
用十六进制工具搜索
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
mono_image_open_from_data_with_name 替换成 mono_image_open_from_data_with_xxxx
自己编译一个imagehook.c的文件生成imagehook.o,内容如下
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
#include <stdio.h>
extern int *
mono_image_open_from_data_with_xxxx(
char *data, unsigned int data_len,
int need_copy,
int *status,
int only, const char *name);
int *
mono_image_open_from_data_with_name(
char *data, unsigned int data_len,
int need_copy,
int *status,
int only, const char *name)
{
printf("call mono_image_open_from_data_with_name 0x%x 0x%x 0x%x 0x%x 0x%x %s", (int)data, (int)data_len, need_copy, (int)status, only, name);
return mono_image_open_from_data_with_xxxx(data, data_len, need_copy, status, only, name);
}
将image.o 和 imagehook.o重新打包进libiPhone-lib.arm
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ar -r libiPhone-lib.arm image.o
ar -q libiPhone-lib.arm imagehook.o
重新生成libiPhone-lib.a
[html] view plaincopy在CODE上查看代码片派生到我的代码片
lipo libiPhone-lib.a -replace armv7 libiPhone-lib.arm -output libiPhone-lib.a_01
这样用新生成的libiPhone-lib.a去链接应用程序会发现调用到了我们自己的函数。
但是你会发现都是没用的,因为mono在IOS下是FULL AOT模式编译的,每个脚本dll会生成对应的.s汇编代码直接连接到可执行文件里面.
发表评论
-
Xcode9解决exportArchive: requires a provisioning profile
2017-09-23 15:15 993https://stackoverflow.com/quest ... -
缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”
2017-09-09 15:05 830//缺少编译器要求的成员“ystem.Runtime.Com ... -
[转]帧同步和状态同步
2017-03-06 12:22 597转自:http://www.gameres.c ... -
非对称加密和数字证书原理
2017-03-01 17:34 448http://www.cnblogs.com/JeffreyS ... -
Unity模糊查找MonoBehaviour
2016-11-23 17:32 1053using System; using System.Co ... -
Unity问题备份
2016-10-09 11:19 6101. Could not find file " ... -
链接-Unity Assetbundle使用填坑
2016-09-08 11:53 536http://www.cnblogs.com/ybgame/p ... -
协程执行顺序测试备份
2016-09-01 18:28 441using UnityEngine;using Syste ... -
[转]简单粗暴的so加解密实现
2016-08-12 17:03 743http://bbs.pediy.com/showthread ... -
[转]android解决apk编译方法数超过64k的问题
2016-08-05 20:59 459如果你是一个android开发者,你至少听说过的Dalvik的 ... -
svn 413 Entity too large
2016-06-29 20:58 680在apache配置conf文件中添加 LimitXMLRequ ... -
[转]gradle打不同渠道的包
2016-06-27 18:29 629美团Android自动化之旅— ... -
IPv4 regex
2016-06-07 12:12 381private static Regex ipv4Reg = ... -
[转]unity3d使用winphone平台的问题
2016-05-25 12:18 413最近在移植u3d的游戏到WindowsPhone8上,Wind ... -
[转]Deep link是什么
2016-05-23 12:06 620http://www.open-open.com/lib/vi ... -
苹果和google play审核时注意的问题
2016-05-16 15:18 696苹果测试沙盒充值不能用越狱手机来测 google play测试 ... -
C# MSDN地址备忘
2016-05-14 19:20 420https://msdn.microsoft.com/zh-c ... -
Windows API错误码
2016-05-14 19:19 293https://msdn.microsoft.com/en-u ... -
java 坑收集
2016-05-06 20:15 3121. Strng.getBytes() 一定要指明用的是什么编 ... -
[转]iphone不越狱抓包
2016-04-27 20:42 941Remote Virtual Interface 在iOS ...
相关推荐
在Google发布Flutter之后我一直对它保持很高的热情,尤其是Flutter支持热更新,但在1.7.8版本之后由于某些原因Google屏蔽了热更新功能,这着实让让人失落……于是抽了点时间研究了一下Flutter的加载过程,目的是找到...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
RN经过一段时间发展,已经有充分数量的人尝试过了,就我身边就有几批,褒贬也不一:①做UI快②还是有很多限制,不如原生Native③入门简单,能让前端快速开发App④iOS&Android大部分代码通用⑤code-push能做热更新,...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
更新:我已经开始研究Ionic应用程序,以实现Android(或IOS)设备上的相同目标。 那个项目在。 一个简单的脚本,可从“ subreddits”数组中列出的subreddits中提取帖子,并将其推送到您的Pocket帐户 完成npm安装后...
内置分布式动态配置中心,企业服务总线ESB,EventBus,基于微软机器人库ccr实现的高性能消息引擎,插件化热更体系,爬虫引擎,分布式发布系统vws,数据库操作中间件DataExpress(支持方言),调度组件,Feed流引擎,...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
手机端的热更新是,首先设置好版本号,然后生成手机端,生成后,把生成的文件全部上传到网站更新目录里面,然后管理后台配置更新目录与版本,就可以了。pc端的更新是上传到相应目录,然后生成更新版本信息。 二十九...