Is it legal to tamper in the Assembly file


I’m working on an android app written in Java that will contain multiple Unity games.

I would like the player to be able to press a button to play the first game, then another button to play another game, and so on.

From what I understand so far, in android applications, the UnityPlayerActivity uses the libraries available in unity-classes.jar

unity-classes.jar then uses the native functions in,, and to run the actual game contains assembly code that refers to the folder “assets/bin” where the actual code and assets of the game exist.

Now, in order to let the player play more than one game, I need to choose the files that need to be placed in “assets/bin” depending on which game the player wants to play; for the first game I put the files of the first game, for the second game I put the files of the second game, and so on.

The problem is that it is not possible to modify the files inside “assets/bin” because they are inside the apk, and an android application is not allowed to modify its own apk.

So the solution that I thought of is to change to refer to a folder that is outside the apk, where I can easily replace one game with another, that should hopefully work.

My question, though, before I start any of this, is: Is it legal?? It’s just a couple of values that I need to change in the library and it should hopefully work, but is that legal???

If it’s not legal, then what are your suggestions for running multiple games in one application??

Thank you,



I think this paragraph in the Terms answers my question with a NO. But I’m not that good in reading legal documents so another specific answer would be great :slight_smile:

General Restrictions. Except as expressly specified in this Agreement, you may not: (a) copy (except in the course of loading or installing) or modify or create derivative works of the Software; (b) distribute, transfer, sublicense, lease, lend, rent or otherwise provide access to the Software to any third party; (c) directly or indirectly make the functionality of the Software available to multiple users or third parties through any means, including but not limited to by uploading the Software to a network or file-sharing service or through any hosting, application services provider, service bureau, software-as-a-service (SaaS) or any other technology or service; (d) use the Software for competitive analysis or to develop a competing product or service; or (e) do anything that could cause or result in the Software (including the runtime portion thereof) being subject to any open source license (or similar license) that requires as a condition of use, modification or distribution that the Software (including the runtime portion thereof) or other software combined or distributed with the Software be: (i) disclosed or distributed in source code form; (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge. You acknowledge and agree that portions of the Software, including but not limited to the source code and the specific design and structure of individual modules or programs, are confidential and constitute or contain trade secrets of Unity and its licensors. Accordingly, you agree not to disassemble, decompile or reverse engineer the Software, in whole or in part, or permit or authorize a third party to do so, except to the extent such activities are expressly permitted by this Agreement or by law notwithstanding this prohibition. Notwithstanding the restriction prohibiting decompiling in the immediately preceding sentence, you may decompile the Unity Common Language Infrastructure (CLI) assemblies solely to inspect their functionality for purposes of understanding or improving performance of your Licensee Content or any editor extension to the Software.

Well, first off, you’re asking a bunch of developers a legal question. Whatever you hear, can you really trust the armchair lawyers? If you’re really concerned, ask an actual lawyer. We certainly can’t cover you in court.

That being said, decompiling or modifying a built assembly for your own internal personal purposes, particularly education, is usually okay. But releasing modified assemblies, in any fashion, without written permission, will likely open you very much to a lawsuit.

Per your second question… the best way would be to import them all into the same Unity project, spend a few months quashing conflict bugs, then add a unified menu for them.

Hi @Abboodd ,
I’ve faced the same problem, described it on unity android forum and then found your question. It was posted a long time ago so what was your final solution on this?

Buddy, I have encountered similar problems. After you solved this problem, how did you solve it?