Unity3d资源文件解密

栏目: 编程语言 · 发布时间: 7年前

内容简介:这里只说 AssetBundle,只有思路。1 废话般前提:逻辑上 AssetBundle 文件加密后肯定是需要解密了,再进行加载。2 Unity 加载AssetBundle文件可以使用 AssetBundle.LoadFromFile,加载内存流可以用AssetBundle.LoadFromMemory 和 AssetBundle.LoadFromStream。

这里只说 AssetBundle,只有思路。

1 废话般前提:逻辑上 AssetBundle 文件加密后肯定是需要解密了,再进行加载。

2 Unity 加载AssetBundle文件可以使用 AssetBundle.LoadFromFile,加载内存流可以用AssetBundle.LoadFromMemory 和 AssetBundle.LoadFromStream。

这些方法对应还有代Async后缀的异步加载方法。

文档在:https://docs.unity3d.com/ScriptReference/AssetBundle.html

3 打断点,看backtrace。

4 慢慢调试。

在我这个场景里,il2cpp dump是没有需求的。

贴一个bt

* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
  * frame #0: 0x0000000101234a68 global`AssetBundle_LoadFromMemory_m412557059
    frame #1: 0x000000010025a610 global`U3CLoadDynamicAssetBundleU3Ec__AnonStorey3_U3CU3Em__0_m1954562509 + 72
    frame #2: 0x000000010013a09c global`MainThreadDispatcher_SendAndWait_m4140732116 + 192
    frame #3: 0x0000000100259414 global`AssetBundleLoader_LoadDynamicAssetBundle_m153660618 + 540
    frame #4: 0x0000000100259e70 global`AssetBundleLoader_Load_m859069093 + 732
    frame #5: 0x000000010072930c global`SpriteLoader_Load_m3286678683 + 1784
    frame #6: 0x00000001005327c0 global`ExtImage_Awake_m3150663317 + 456
    frame #7: 0x00000001017d6ad0 global`RuntimeInvoker_Void_t1841601450(MethodInfo const*, void*, void**) + 28
    frame #8: 0x00000001021a1e24 global`il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**) + 68
    frame #9: 0x0000000101c035f4 global`ScriptingInvocation::Invoke(Il2CppException**, bool) + 60
    frame #10: 0x0000000101c0352c global`ScriptingInvocation::InvokeChecked(Il2CppException**) + 68
    frame #11: 0x0000000101ce10ac global`MonoBehaviour::CallMethodInactive(ScriptingMethodIl2Cpp) + 88
    frame #12: 0x0000000101ce2e34 global`MonoBehaviour::CallAwake() + 76
    frame #13: 0x0000000101ce3134 global`MonoBehaviour::AddToManager() + 132
    frame #14: 0x0000000101ce2dcc global`MonoBehaviour::AwakeFromLoad(AwakeFromLoadMode) + 568
    frame #15: 0x0000000101c0c548 global`AwakeFromLoadQueue::InvokePersistentManagerAwake(AwakeFromLoadQueue::Item*, unsigned int, AwakeFromLoadMode) + 96
    frame #16: 0x0000000101c0c48c global`AwakeFromLoadQueue::PersistentManagerAwakeFromLoad(int, AwakeFromLoadMode) + 140
    frame #17: 0x0000000101c0c3e8 global`AwakeFromLoadQueue::PersistentManagerAwakeFromLoad() + 36
    frame #18: 0x0000000101bfc9b8 global`LoadSceneOperation::CompleteAwakeSequence() + 96
    frame #19: 0x0000000101bfc3e0 global`LoadSceneOperation::PostLoadSceneAdditive() + 32
    frame #20: 0x0000000101bfc304 global`LoadSceneOperation::IntegrateMainThread() + 80
    frame #21: 0x0000000101bfd01c global`PreloadManager::UpdatePreloadingSingleStep(PreloadManager::UpdatePreloadingFlags, int) + 316
    frame #22: 0x0000000101bfd59c global`PreloadManager::UpdatePreloading() + 252
    frame #23: 0x0000000101b07c4c global`PlayerLoop() + 332
    frame #24: 0x0000000101d4381c global`UnityPlayerLoopImpl(bool) + 32
    frame #25: 0x0000000100047c80 global`UnityRepaint + 140
    frame #26: 0x0000000100047b6c global`-[UnityAppController(Rendering) repaintDisplayLink] + 88
    frame #27: 0x0000000184da2f24 QuartzCore`CA::Display::DisplayLinkItem::dispatch(unsigned long long) + 44
    frame #28: 0x0000000184da2dd0 QuartzCore`CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 444
    frame #29: 0x0000000181dba094 IOKit`IODispatchCalloutFromCFMessage + 372
    frame #30: 0x0000000181ae2e50 CoreFoundation`__CFMachPortPerform + 180
    frame #31: 0x0000000181afb218 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
    frame #32: 0x0000000181afa9cc CoreFoundation`__CFRunLoopDoSource1 + 436
    frame #33: 0x0000000181af84b0 CoreFoundation`__CFRunLoopRun + 1840
    frame #34: 0x0000000181a262b8 CoreFoundation`CFRunLoopRunSpecific + 444
    frame #35: 0x00000001834da198 GraphicsServices`GSEventRunModal + 180
    frame #36: 0x0000000187a6d7fc UIKit`-[UIApplication _run] + 684
    frame #37: 0x0000000187a68534 UIKit`UIApplicationMain + 208
    frame #38: 0x00000001000417dc global`main + 156
    frame #39: 0x0000000180a095b8 libdyld.dylib`start + 4

工具:

https://github.com/Perfare/UnityStudio

https://github.com/HearthSim/UnityPack


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Computers and Intractability

Computers and Intractability

M R Garey、D S Johnson / W. H. Freeman / 1979-4-26 / GBP 53.99

This book's introduction features a humorous story of a man with a line of people behind him, who explains to his boss, "I can't find an efficient algorithm, but neither can all these famous people." ......一起来看看 《Computers and Intractability》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具