Unity Android 动态更新 Assembly-CSharp.dll
来源:互联网 发布:socket长连接发送数据 编辑:程序博客网 时间:2024/06/06 03:00
http://blog.sina.com.cn/s/blog_9e5d42ee0102vvtg.html
1.流程
MonoImage *
mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name)
{
//修改开始1
int datasize =0;
if(strstr(name,"Assembly-CSharp.dll")){
g_message("momo: path = %s\n", _name);
char* bytes = ReadStringFromFile (_name,&datasize);
if(datasize >0){
data = bytes;
data_len = datasize;
//data[0] -= (char)getKey();
//g_message("momo: key = %d\n", getKey());
}
}
//修改结束1
MonoCLIImageInfo *iinfo;
MonoImage *image;
char *datac;
MonoCLIImageInfo *iinfo;
MonoImage *image;
char *datac;
if (!data || !data_len) {
if (status)
*status = MONO_IMAGE_IMAGE_INVALID;
return NULL;
}
datac = data;
if (need_copy) {
datac = g_try_malloc (data_len);
if (!datac) {
if (status)
*status = MONO_IMAGE_ERROR_ERRNO;
return NULL;
}
memcpy (datac, data, data_len);
}
//修改开始2
if(datasize >0 && data != 0){
g_free (data);
}
//修改结束2
//附so加密 放在image.c 的开始处吧
//SO---------------加密----------------------
#include
#include
#include
//注意上面说解密算法里面的断. lclly就是这里,
//这里把getKey进行了加密,这样对方拿不到你的密钥都没法破解你的dll了
int getKey()__attribute__((section (".lclly")));
int getKey(){
return88;
};
//这里就是.so初始化的时候,这里进行lclly断的解密工作
void init_getKey()__attribute__((constructor));
unsignedlong getLibAddr();
void init_getKey(){
}
unsignedlong getLibAddr(){
_error:
}
//SO---------------加密----------------------
static FILE* OpenFileWithPath(const char* path )
{
}
staticchar* ReadStringFromFile(constchar* pathName,int* size)
{
}
//SO---------------加载DLL-------------------
3.Java部分修改
publicvoid restartApplication() {
newThread(){
publicvoid run(){
Intentlaunch=getBaseContext().getPackageManager().getLaunchIntentForPackag
launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(launch);
android.os.Process.killProcess(android.os.Process.myPid());
}
}.start();
finish();
}
4.C# 下载资源
public
}
其实还有另一种动态更新dll方案,就是 先启动一个androidapp 下载 dll 再启动游戏同样需要编译替换MONO中的加载
- Unity Android 动态更新 Assembly-CSharp.dll
- unity 修改Mono反破解加密Assembly-CSharp.dll
- unity 修改Mono反破解加密Assembly-CSharp.dll
- 加密Unity的windows版本Assembly-CSharp.dll的实现
- Unity3d 加密 Assembly-CSharp.dll (Android平台) 全记录
- Unity3D 加密 Assembly-CSharp.dll (Android平台) 防止反编译
- Unity3d Assembly-CSharp.dll加密
- 重新编译Assembly-CSharp.dll
- unity逆向破解(一) 打开简单加密的Assembly-CSharp.dll
- Assembly动态加载DLL
- Assembly-CSharp-firstpass.dll could no be found
- Unity 动态加载dll
- Unity3D安卓导出包加密学习--加密Assembly-CSharp.dll
- 我不断地得到报告“Assembly-CSharp.dll.mdb”被拒绝访问的消息
- HoloLens开发笔记-Assembly-CSharp-firstpass.dll' could not be found。
- Cross compilation job Assembly-CSharp.dll failed.UnityException: Failed AOT cross compiler
- Unity动态更新
- Unity dll 热更新 前奏
- 在内部存储中读文件
- Material Design Library
- Android页面中的引导蒙层的使用
- JVM之指令重排分析
- 静态函数讲解
- Unity Android 动态更新 Assembly-CSharp.dll
- ParalleX OS 设计与实现 Parallex 操作系统设计方向讨论
- 风口的猪-中国牛市(动态规划)----百度2016研发工程师在线编程题
- Scala学习笔记11 - Actor和并发
- JavaBean构造使用Build模式
- jquery 常见常用文档操作函数
- VS里面遇到的很多错误,都是因为没有导入合适的库
- H5:Canvas:字符串,路径,背景,图片
- hdu 1252