3

DLL混淆问题

 2 years ago
source link: https://blog.uwa4d.com/archives/TechSharing_276.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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


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
更多精彩问题等你回答~

封面图来源于: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(原群已满员)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK