怎么逆向 unity3d 文件夹里面的文件

NGUI的Atlas做好后,源文件不小心删除,SPRITE 如何逆向导出?
NGUI的Atlas做好后,源文件不小心删除,SPRITE 如何逆向导出?
热烈欢淫各位攻城湿来救救我们这些苦逼小美工
要评论请先&或者&
貌似没有这功能吧。。。
:貌似没有这功能吧。。。 谢谢大湿支持
用什么做的Atlas呢?如果是外部做的,应该有保存吧,比如TexturePackerGUI。如果用NGUI自带的功能,没法恢复了,不过至少这些Sprite还在图集中,再抠出来吧。。。
:用什么做的Atlas呢?如果是外部做的,应该有保存吧,比如TexturePackerGUI。如果用NGUI自带的功能,没法恢复了,不过至少这些Sprite还在图集中,再抠出来吧。。。 感谢大侠相助!程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity研究院之Prefab和GameObject的正向和逆向查找引用
Unity研究院之Prefab和GameObject的正向和逆向查找引用
围观59361次
编辑日期: 字体:
我发现很多美工兄弟都爱问程序Unity3d为什么总丢材质? 我不排除U3d有BUG的情况下会丢材质?但是其实很多时候是人为操作而引起的。
1.不保存就在上传
这个操作太恐怖了,切记!!在 U3D里面你无论操作了什么,当你要上传svn的时候一定要先保存场景,Ctrl+S 切记切记!!如果不保存就上传很有可能就会丢材质。
2.我的电脑明明没事,怎么你哪里就丢材质?
我发现一个很有意思的现象,每次走到美术电脑前看它的svn工程时,我都会发现各种的“黄叹号”整个工程严重的冲突。然后程序和美术的对话就是:“这资源有用没?没用删了, 我重新更新。。。” 哈哈哈 我觉得可能只有程序员才会对冲突非常敏感吧,但我觉得这件事不能怪美术,美术是很抽象的东西,不向程序要具体到少一个分号就无法进行了。
3.管理好材质贴图
如果项目不管理好材质和贴图,后起你会发现有很多完全一样的图片只是名子不一样,但是还都在使用中。。这个很有可能是好几个美术同时在做,这样会造成资源的浪费。
4.特效丢材质
我举个实际的例子,我们项目场景和特效是两个人来做。之前总遇到场景特效莫名其妙丢材质的问题。原因就是做特效的人把特效修改了,但是做场景的又不知道,因为可能这个特效在好多场景上都在使用中。
如下图所示,在Preiject下面方的Prefab 如果拖入Hierarchy视图中,它俩是具有关联关系的,如果你直接在Project视图中修改了Prefab那么所有Hierarchy视图中关联它的Prefab都会得到修改。小改动这样是没问题的,如果发生一些比较大的改动,那么Hierarchy视图中Prefab可能就会丢失或者坏掉。但是假如你有很多场景都引用同一个Prefab,这么多场景会很难找到的。
正向在Hierarch视图中选择一个prefab,然后在右侧Inspector视图中点击Select会自动找到Project视图中的Prefab对象。那么反向如何从Project视图中找到Hierarchy视图中引用的Prefab呢?
如下图所示,Unity3d做了一个功能,在Project视图中选择一个Prefab,然后右键选择Find References In Scene ,那么此时Unity会自动帮你在当前场景中找到Hierarchy视图中引用这个Prefab的GameObject。
但是这个方法有点局限性,就是它只能找到当前场景的,假设你的这个Prefab在很多场景中都引用了,那么这样是找不到了,为了美术我决定写一个小小的工具,嘿嘿。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
[MenuItem("Assets/Check Prefab Use ?")] private static void OnSearchForReferences() { &&//确保鼠标右键选择的是一个Prefab
if(Selection.gameObjects.Length != 1)
//遍历所有游戏场景
foreach(EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
if(scene.enabled)
&&//打开场景
EditorApplication.OpenScene(scene.path);
//获取场景中的所有游戏对象
GameObject []gos = (GameObject[])FindObjectsOfType(typeof(GameObject));
foreach(GameObject go&&in gos)
&&//判断GameObject是否为一个Prefab的引用
if(PrefabUtility.GetPrefabType(go)&&== PrefabType.PrefabInstance)
UnityEngine.Object parentObject = EditorUtility.GetPrefabParent(go);
string path = AssetDatabase.GetAssetPath(parentObject);
//判断GameObject的Prefab是否和右键选择的Prefab是同一路径。
if(path == AssetDatabase.GetAssetPath(Selection.activeGameObject))
//输出场景名,以及Prefab引用的路径
Debug.Log(scene.path&&+ "&&" + GetGameObjectPath(go));
} } public static string GetGameObjectPath(GameObject obj) {
string path = "/" + obj.name;
while (obj.transform.parent != null)
obj = obj.transform.parent.gameObject;
path = "/" + obj.name + path;
return path; }
如下图所示,我就可以找到哪个场景引用了这个Prefab。 这里我没有用GameObject和Prefab的名子来判断,我觉得最好也不要用名字,因为Hierarchy视图中的名子完全可以随意修改的,如果被改了的话就肯定找不到了,而且场景那么多完全有重名的情况。
是不是很简单呢?嘿嘿。
或者还有个办法,就是运行时动态的载入Prefab,但是有些场景特效其实万全没有任何意义,仅仅是展示而已,程序也无需对它进行操作。
有了这个小工具,那么以后美术改完Prefab的时候,运行一下连带的看看某些场景上是否正常的显示了?嘿嘿嘿嘿。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!逆向和调试Unity3D游戏手记之一 - 简书
逆向和调试Unity3D游戏手记之一
一、背景和意义
Unity3D是手游领域的主要游戏引擎,熟练掌握对其的逆向方法,对我们而言十分重要。目前主流的方法是对其dll进行反汇编,然而越来越多游戏对其dll进行加密。因此本文的目的在于从另外一个方向对Unity3D游戏进行逆向和调试,第一步是要找到自定义函数的代码。
二、准备工作
逆向对象,Unity3D官方例程 ——SpaceShooter,发布于Android平台
工具:ida 6.5
三、相关代码分析
调用自定义函数的总体过程
&pre&&code&
info-&compiled_method
runtime_invoke()
mono_jit_runtime_invoke() at mini.c:4,789 0x8065cc1
mono_runtime_invoke() at object.c:2,613 0x8195d35
create_exception_two_strings() at exception.c:133 0x81e6a9f
mono_exception_from_name_two_strings() at exception.c:156 0x81e6adf
create_exceptions() at appdomain.c:185 0x818b9e4
mono_runtime_init() at appdomain.c:262 0x818bc0d
mini_init() at mini.c:5,520 0x806734a
mono_main() at driver.c:1,623 0x80ec127
main() at main.c:34 0x805b950
&/code&&/pre&
主要要关注的是从mono_runtime_invoke()到info-&compile_method()的这样一个调用过程
分析mono_runtime_invoke()
相关汇编代码
&pre&&code&
.text:001FA9AC ; MonoObject *__cdecl mono_runtime_invoke(MonoMethod *method, void *obj, void **params, MonoObject **exc)
.text:001FA9AC
EXPORT mono_runtime_invoke
.text:001FA9AC mono_runtime_invoke
CODE XREF: mono_jit_compile_method_inner+7B0?p
.text:001FA9AC
load_agent+240?p ...
.text:001FA9AC
.text:001FA9AC exc
.text:001FA9AC params
.text:001FA9AC obj
.text:001FA9AC method
.text:001FA9AC result
.text:001FA9AC
.text:001FA9AC
SP!, {R11,LR}
.text:001FA9B0
R11, SP, #4
.text:001FA9B4
SP, SP, #0x18
.text:001FA9B8
R0, [R11,#method]
.text:001FA9BC
R1, [R11,#obj]
.text:001FA9C0
R2, [R11,#params]
.text:001FA9C4
R3, [R11,#exc]
.text:001FA9C8
mono_runtime_get_no_exec
.text:001FA9CC
.text:001FA9D0
.text:001FA9D4
loc_1FA9FC
.text:001FA9D8
R0, [R11,#method] ; method
.text:001FA9DC
R1, #1 signature
.text:001FA9E0
mono_method_full_name
.text:001FA9E4
.text:001FA9E8
R0, #0 log_domain
.text:001FA9EC
R1, #0x10 ; log_level
.text:001FA9F0
R2, =(aInvokingMethod - 0x1FA9FC)
.text:001FA9F4
R2, PC, R2 ; "Invoking method '%s' when running in no"...
.text:001FA9F8
.text:001FA9FC
.text:001FA9FC loc_1FA9FC
CODE XREF: mono_runtime_invoke+28?j
.text:001FA9FC
mono_profiler_get_events
.text:001FAA00
.text:001FAA04
R3, R3, #0x10000
.text:001FAA08
.text:001FAA0C
loc_1FAA18
.text:001FAA10
R0, [R11,#method] ; method
.text:001FAA14
mono_profiler_method_start_invoke
.text:001FAA18
.text:001FAA18 loc_1FAA18
CODE XREF: mono_runtime_invoke+60?j
.text:001FAA18
R3, =(default_mono_runtime_invoke - 0x1FAA24)
.text:001FAA1C
R3, PC, R3 ; default_mono_runtime_invoke
.text:001FAA20
.text:001FAA24
R0, [R11,#method]
.text:001FAA28
R1, [R11,#obj]
.text:001FAA2C
R2, [R11,#params]
.text:001FAA30
R3, [R11,#exc]
.text:001FAA34
.text:001FAA38
R0, [R11,#result]
.text:001FAA3C
mono_profiler_get_events
.text:001FAA40
.text:001FAA44
R3, R3, #0x10000
.text:001FAA48
.text:001FAA4C
loc_1FAA58
.text:001FAA50
R0, [R11,#method] ; method
.text:001FAA54
mono_profiler_method_end_invoke
.text:001FAA58
.text:001FAA58 loc_1FAA58
CODE XREF: mono_runtime_invoke+A0?j
.text:001FAA58
R3, [R11,#result]
.text:001FAA5C
.text:001FAA60
SP, R11, #4
.text:001FAA64
SP!, {R11,PC}
.text:001FAA64 ; End of function mono_runtime_invoke
&/code&&/pre&
核心代码就是
&pre&&code&
.text:001FAA20
.text:001FAA24
R0, [R11,#method]
.text:001FAA28
R1, [R11,#obj]
.text:001FAA2C
R2, [R11,#params]
.text:001FAA30
R3, [R11,#exc]
.text:001FAA34
&/code&&/pre&
在mono源码中对应的就是
&pre&&code&
result = default_mono_runtime_invoke (method, obj, params, exc);
&/code&&/pre&
3.分析mono_jit_runtime_invoke()
这一层代码太长,就不全贴了
核心代码是在函数尾部
&pre&&code&
.text: loc_238F4
CODE XREF: mono_jit_runtime_invoke+908?j
R2, [R11,#obj]
R3, [R11,#info]
.text:000238FC
R3, [R3,#4]
R12, [R11,#runtime_invoke]
R1, [R11,#params]
.text:0002390C
R2, [R11,#exc]
&/code&&/pre&
对应的mono源码是
&pre&&code&
return runtime_invoke (obj, params, exc, info-&compiled_method);
&/code&&/pre&
分析runtime_invoke()
&pre&&code&
debug117:589E0300 MOV
debug117:589E0304 STMFD
SP!, {R8,R11,R12,LR}
debug117:589E0308 SUB
SP, SP, #0x30
debug117:589E030C MOV
debug117:589E0310 STR
R0, [R11,#0x1C]
debug117:589E0314 STR
R1, [R11,#0x20]
debug117:589E0318 STR
R2, [R11,#0x24]
debug117:589E031C STR
R3, [R11,#0x28]
debug117:589E0320 MOV
debug117:589E0324 STR
debug117:589E0328 MOV
debug117:589E032C STR
R0, [R11,#4]
debug117:589E0330 LDR
R0, [R11,#0x24]
debug117:589E0334 CMP
debug117:589E0338 BEQ
loc_589E0348
debug117:589E033C LDR
R0, [R11,#0x24]
debug117:589E0340 MOV
debug117:589E0344 STR
debug117:589E0348
debug117:589E0348 loc_589E0348
CODE XREF: debug117:589E0338?j
debug117:589E0348 MOV
R0, #0x5CE151C8
debug117:589E0350 LDR
debug117:589E0354 CMP
debug117:589E0358 BEQ
loc_589E0360
debug117:589E035C BL
unk_589E0060
debug117:589E0360
debug117:589E0360 loc_589E0360
CODE XREF: debug117:589E0358?j
debug117:589E0360 LDR
R0, [R11,#0x28]
debug117:589E0364 BLX
debug117:589E0368 MOV
debug117:589E036C STR
debug117:589E0370 B
loc_589E03C0
&/code&&/pre&
核心代码是
&pre&&code&
debug117:589E0360 LDR
R0, [R11,#0x28]
debug117:589E0364 BLX
&/code&&/pre&
也就是调用info-&compiled_method
最后就是自定义函数的ARM汇编代码了
&pre&&code&
void Update ()
if (restart)
if (Input.GetKeyDown (KeyCode.R))
Application.LoadLevel (Application.loadedLevel);
&/code&&/pre&
相应的汇编代码
&pre&&code&
debug118:589E54A8 MOV
debug118:589E54AC STMFD
SP!, {R8,R11,R12,LR}
debug118:589E54B0 SUB
SP, SP, #8
debug118:589E54B4 MOV
debug118:589E54B8 STR
debug118:589E54BC LDR
debug118:589E54C0 LDRB
R0, [R0,#0x35]//获取bool restart
debug118:589E54C4 CMP
debug118:589E54C8 BEQ
loc_589E54E4//为假跳转
debug118:589E54CC MOV
R0, #0x72//KeyCode.R的常量值?
debug118:589E54D0 BL
unk_589E7408//应该是input.getKeyDown(KeyCode.R)
debug118:589E54D4 CMP
debug118:589E54D8 BEQ
loc_589E54E4//结果为假跳转
debug118:589E54DC BL
unk_589E54F8
debug118:589E54E0 BL
unk_589E54EC
debug118:589E54E4
debug118:589E54E4 loc_589E54E4
CODE XREF: debug118:589E54C8?j
debug118:589E54E4
debug118:589E54D8?j
debug118:589E54E4 ADD
SP, R11, #8
debug118:589E54E8 LDMFD
SP, {R8,R11,SP,PC}
&/code&&/pre&
计算机/经济/军事/科技
一 需要工具 系統環境需求: Unix系統 (如Linux、Mac) PC端工具: xpwntool: https://github.com/xerub/xpwn 或 https://github.com/sektioneins/xpwntool-lite 已編譯 Mac ...
/arch/arm/kernel/head.S 的分析 1. 此时系统所满足的条件: MMU = off, D-cache = off, I-cache = dont care r0 = 0, r1 = machine nr, r2 = atags or dtb point...
原文出自看雪论坛 发文动机 几周前我参加某个会议的时候,有个“物联网上的 ARM 漏洞利用课程”的议题我觉得很多干货,我也决定自己写一篇,给去不了现场的同学发些福利。我打算分为三个部分来写。 当然我的文章没办法和现场的 course 相比,我还是想为大家做一些微小的工作。 ...
声明:本文转自Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码),此文干货很多。 一、前言今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的nativ...
一. ARM 寄存器 ARM共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.这些寄存器不能被同时访问,但在任何时候,通用寄存器R0~R14,程序计数器PC,一个或两个状态寄存器都是可访问的. arm64有32个64bit长度的通用寄存器x0~x30,sp,...
她的老伴去世十几年了,我感觉她的脾气有点古怪。好起来,比如体检的时候,每次都让人排在自己前面。坏起来,比如有时候邀请她参加个活动,没来由的推三阻四。 这次的诗歌节演出,我起初有些犹豫要不要喊她。后来领导定调子了,要找老劳模,全国劳模,好吧,必须邀请她了。 打电话给她,说明了...
午後的陽光讓我更加溫暖 透過汙濁的紗窗看見外面的世界 只好孤單的封閉在一個空間 只有鐘擺和我為伴,滴答,滴答 記錄了生命的每個痕跡 音樂的嘈雜使我洗心革面 喝一杯濃烈的白酒 品嘗乾澀的味道 解析自我,解剖靈魂
入住酒店,我喜欢那种宾至如归,回家的温馨,追求一种舒适的享受,如女王般被人宠爱。最好是:下飞机,有管家电话问候;进酒店,有管家接送行李;床头柜上有备好的充电线,电水煲旁有咖啡、茶任意选;沙发前有洗净的水果;不时的小惊喜让我感受到被宠的爱意。在酒店,不用处处谨慎怕被消费了什么...
关于今天心情,莫名不爽,原因未知。或许,男人也有那么几天,不过仅限心理层面,无关生理。 高中,是这段心情过得最漫长的阶段。至今,我仍记忆犹新。为此,老师评语:此人处于叛逆期,闲人勿扰。理由:成绩极烂,不听劝告,独来独往。我心知肚明,全班都已被拉入黑名单,只因心情不爽。 叛逆...
來自臺灣的金牛座男生, 英國南安普頓大學管理學碩士。2011年秋天, 隻身一人背負著臺灣政府救助金貸款, 頂著不能立刻賺錢回饋家裏的愧疚感, 還有對未來生活得不確定的壓力來到英國。所有求學期間遭遇得困境, 都轉化成人生的能量與故事。那段艱辛時刻警醒著他自己無論遇到任何的困難...有人研究unity的逆向修改麽【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:87,200贴子:
有人研究unity的逆向修改麽收藏
#春节表情包#
不好搞,需要反编译高手
看雪安全论坛有过unity逆向的研究……
不好弄,原则上是可以的
谁教我怎么逆向修改图片
登录百度帐号}

我要回帖

更多关于 unity3d格式文件打开 的文章

更多推荐

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

点击添加站长微信