DLL混淆问题

DLL混淆问题

1)DLL混淆问题
​2)Unity主程如何做项目管理
3)将ASTC格式转换为png格式
4)iOS 14在iPhone正常,但在iPad上会卡住


这是第276篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Scripting

Q:如果不用收费软件和加固,我们自己使用免费软件,如何对DLL进行混淆。

注:之前是用Microsoft.NET/Framework64/v3.5/csc进行打DLL,但是今天我回顾一下发现,DLL并没有混淆。

A1:若在Unity上使用,可以参考开源的方案:Unity Obfuscator Demo

简介
这是一款基于Mono.Cecil库,对C#编译后程序集进行IL代码注入实现的轻量Unity混淆插件,混淆发生在编译后,开发过程无需关心。此插件已在带Lua热更方案的商业MMO手游项目上验证过可行性。

主要功能
对命名空间、类、属性和字段的命名混淆
插入垃圾代码
在原代码中插入对垃圾代码的调用

特色功能
命名混淆支持随机字符串或从词库抽取名字
支持随机种子,可实现重复Build后混淆结果一致
支持黑白名单,排除部分在混淆后不能正常工作的代码,确保项目正常运行
混淆后输出混淆前后的名字对应关系文件
支持多DLL

感谢马三小伙儿@UWA问答社区提供了回答

A2:可以看一下AssetStore上的插件,我之前有个项目也用过:
https://assetstore.unity.com/packages/tools/utilities/obfuscator-free-89420

免费版基本上可用:
https://assetstore.unity.com/packages/tools/utilities/obfuscator-48919

收费版支持IL2CPP,支持程序集定义文件。

感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/61922be9d8413e18eb14a43f


Unity

Q:Unity主程如何做项目管理?比如资源管理、代码管理和工程管理。可以从多个维度讨论下吗?

A1:资源还是比较简单的,首先按照功能或者需求进行文件夹分类,资源的格式可以写一些AssetPostprocessor的代码来强制转换,整个工程的资源管理自动化。

开发的人员比较多,又对代码质量有一定要求,可以考虑用Git,不要用SVN,主程负责Review所有PR的代码,然后定期进行UT和BVT。

工程管理也可以依赖于Git的Tag和Branch来管理,尽量保证每个版本都是ZBB。

主程要做的事情还是蛮多的,简单写了一下,欢迎大家来讨论。

感谢萧小俊@UWA问答社区提供了回答

A2:身为一个合格的主程,我觉得应该具备以下素质:

1.首先是技术方面,就当独当一面,一马当先。
强大的技术支撑是要具备的,这里其实也可以细分,一个是专业性和广度。先提升某一方面的专业度,同时了解学习新技术,在不同领域的知识要有相对的了解。

2.再之就是管理方面,抓主线,控支流。
应该有好的项目框架。框架是为了更好的迭代和规范项目。一切都是为了开发跟成品服务的。所以不管代码规范,资源管理,甚至是使用习惯,都要遵循简单易用,通俗易懂为原则。比如开发了一个工具,功能非常强大,但是没人会使用它。那意义就大打折扣了。

技术上没有捷径,全靠努力跟积累。管理上需要自己思维上变通,多做尝试。但是有一点我觉得要注意,不能什么都面面俱到,主程是要把控大方向的,不能什么都要干预,适当放手,要培养人,不是带人。这样团队才有创新力,团队成员才会有成就感。而不是个人成就。管理是门大学问,不像技术可以有固定的学习思路。需要自己不断探索,才会有自己的风格和魅力。

感谢廖武兴@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/61947fe3d8413e18eb17e003


Texture

Q:.astc类文件如何转换为.png文件,Windows操作系统。

A:ARM提供了压缩ASTC和解压的工具。

对应命令:
压缩:astcenc-sse2.exe -cl origin.png example.astc 6x6 -medium
解压:astcenc-sse2.exe -dh example.astc example.png

可以参考:https://github.com/ARM-software/astc-encoder

感谢范世青@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/61925149d8413e18eb14e0cb


iOS

Q:在iOS上遇到了一个比较棘手的问题,我们的游戏在iPhone上能正常跑,但是在iPad上会卡在进入主城的加载界面中,具体的表现是这样的:

1. 测试的iPad型号,2台A12处理器,1台M1处理器

2. iOS版本,全部都是iOS 14.8

3. 结果:
其中一台iPad A12处理能够正常运行,其余两台IPad都在加载中卡住。

4. 出错的表现为:在进入加载界面之后,会卡住在界面,但其实CPU逻辑是在跑,只是GPU因为渲染错误导致无法更新的画面信息,主要依据是在xCode Capture的时候,是能够正常看到主界面的已经在渲染,点击到相应的屏幕位置,Caputure也能看到UI能正常响应,只要退出Capture继续运行,还会回到加载界面。

5. 报错的Log:
Execution of the command buffer was aborted due to an error during execution. Ignored (for causing prior/excessive GPU errors) (IOAF code 4)

不知道大家有没有遇到过类似的问题,或者说有没有什么建议,谢谢!

A:可以参考梅辰写的《解决iOS GPU报错导致游戏卡死IOAF code 4》

感谢马古斯@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6193beedd8413e18eb16cbdf


20211122
更多精彩问题等你回答~

  1. Unity增量打包AssetBundle没变化的资源也会被重新打包
  2. 在模型有UV2的情况下开启Generate Lightmap UVs
  3. 如何实现AAB包的增量更新

封面图来源于:Unity Obfuscator Demo
Unity代码混淆插件使用demo。
https://lab.uwa4d.com/lab/5e94d57e0f247485d923d7d2


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)