1.virtulappԴ?源译????
2.VirtualAPP源码解析-Native Hook技术
virtulappԴ?????
近日,一起关于GPL版权纠纷案引发广泛关注。码编该案件中,源译被告因违反GPL3.0协议而导致协议自动解除,码编失去源代码授权保护,源译进而构成侵权。码编期权源码下载搭建一审判决书明确指出,源译GPL3.0协议具有民事法律行为的码编性质,属于我国《合同法》调整的源译范围。判决结果为两侵权被告公司赔偿原告公司经济损失及维权合理费用共计万元,码编并停止侵权行为。源译此案例是码编中国首个明确GPL3.0协议法律效力的判例。
案情概述涉及原告济宁市罗盒网络科技有限公司,源译其开发的码编“罗盒(VirtualApp)插件化框架虚拟引擎系统”(VirtualApp V1.0)在GitHub上公开源代码。在年月8日,源译原告取得计算机软件著作权登记证书,拥有软件著作权全部权利。由于软件的成功,被告福建风灵创景科技有限公司、北京风灵创景科技有限公司以及深圳市腾讯计算机系统有限公司,通过多个互联网平台提供侵权软件下载、.netcore源码解读安装和运营服务,涉及“点心桌面”App。软件源代码与原告软件源代码存在实质性相似性,构成侵权。
判决书中明确指出,违反GPL3.0协议的侵权责任包括:著作权法保护权利人专有权,非权利人仅能在合理使用范围内使用作品;用户违反使用条件时,GPL3.0协议在授权人与用户之间的授权将自动终止。我国《民法总则》第一百五十八条规定,民事法律行为可以附条件,米粒导航源码附解除条件的民事法律行为自条件成就时失效。
综上所述,此案明确展示了GPL协议的法律效力,以及开源许可证在开源软件中的重要性。然而,开源许可证治理仍面临多项挑战,包括条款晦涩难懂、声明方式不规范、代码检测能力不足、项目溯源困难、盛世龙城 源码问责难和解决方案匮乏等。针对这些问题,棱镜七彩开发了FossLicense开源许可证治理工具,旨在解决开发者和管理人员在使用和管理软件过程中遇到的许可证合规使用和版权篡改问题。FossLicense支持SaaS云服务和本地离线部署两种部署方式,用户可通过此工具提取代码中的许可证信息、校验文件同源许可证情况、管理许可证知识库,并持续关注代码仓库的许可证风险变化,有效规避合规风险。公会麻将源码
VirtualAPP源码解析-Native Hook技术
Native Hook技术在VirtualAPP中的应用背景在于虚拟APP的文件访问重定向。VirtualAPP作为子进程启动一个虚拟APP时,文件存储路径会默认指向VirtaulAPP的data目录。这可能导致文件访问冲突,且无法实现APP间的隔离。VirtualAPP通过Native Hook技术解决了这个问题,让每个APP有独立的文件存储路径。
实现原理关键在于VClientImpl的startIOUniformer方法,通过进行存储路径映射,将子进程访问的目录路径转换为虚拟app路径。这个过程通过调用IOUniformer.cpp的startUniformer方法实现。我们知道Android系统基于Linux内核,文件读写操作通过库函数进行系统调用。因此,Native Hook技术实现方式是替换libc库函数的方法,将输入参数替换为虚拟app路径,从而实现文件访问路径的重定向。
要确定需要hook的函数,开发者需要查看libc源码。Native Hook技术有PLT Hook与Inline Hook两种实现方式。PLT Hook主要通过替换程序链接表中的地址,而Inline Hook则直接修改汇编代码,实现更广泛的场景与更强的能力。虚拟app使用的第三方开源项目Cydia Substrate实现了Inline Hook方案,而爱奇艺开源的xHook则采用了PLT Hook方案。虚拟app通过宏定义灵活运用这两种Hook方案,实现对libc库函数的替换。
Native Hook技术的实现过程涉及到so动态链接、ELF文件格式、汇编指令等知识,其具体步骤包括定义Hook调用和替换方法。例如,通过HOOK_SYMBOL宏定义函数指针,HOOK_DEF宏定义替换函数,最终通过hook_function方法实现Hook操作。MSHookFunction函数即为Cydia Substrate提供的Hook能力。
学习Native Hook技术需要逐步积累,理解其原理和实现过程需要时间和实践。后续文章将深入探讨MSHookFunction的具体实现原理,进一步帮助读者掌握Native Hook技术。