LSPosed/LSParanoid — 429★ trên GitHub (Kotlin). String obfuscator for Android applications
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Now you can just annotate classes with strings that need to be obfuscated with @Obfuscate.
After you project compiles every string in annotated classes will be obfuscated.
Note that you should use at least Java 17 to launch the gradle daemon for this plugin (this is also required by AGP 8+).
The project that uses this plugin on the other hand does not necessarily to target Java 17.
Configuration
Paranoid plugin can be configured using lsparanoid extension object.
The following is an example build.gradle.kts that configures lsparanoid extension object with default values.
The extension object contains the following properties:
seed - Integer. A seed that can be used to make obfuscation stable across builds. Default value is null. Set it to non-null can make the obfuscation task cacheable.
classFilter - (String) -> boolean. If set, it allows to filter out classes that should be obfuscated. Use classFilter = { true } to turn on global obfuscation i.e. obfuscate all classes, not only annotated ones. Or apply a filter like classFilter = { it.startsWith("com.example.") } or classFilter = { it != "module-info" }. Default value is null.
includeDependencies - boolean. If true, the obfuscation will be applied to all dependencies. Default value is false.
variantFilter - (Variant) -> boolean. Allows to filter out variants that should be obfuscated. Default value always returns true. Note that you can set seed, classFilter and includeDependencies dynamically for each variant in variantFilter. For example
Let's say you have an Activity that contains some string you want to be obfuscated.
@Obfuscate
public class MainActivity extends AppCompatActivity {
private static final String QUESTION = "Q: %s";
private static final String ANSWER = "A: %s";
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
final TextView questionTextView = (TextView) findViewById(R.id.questionTextView);
questionTextView.setText(String.format(QUESTION, "Does it work?"));
final TextView answerTextView = (TextView) findViewById(R.id.answerTextView);
answerTextView.setText(String.format(ANSWER, "Sure it does!"));
}
}
The class contains both string constants (QUESTION and ANSWER) and string literals.
After compilation this class will be transformed to something like this.
@Obfuscate
public class MainActivity extends AppCompatActivity {
private static final String QUESTION = Deobfuscator.getString(4);
private static final String ANSWER = Deobfuscator.getString(5);
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
final TextView questionTextView = (TextView) findViewById(R.id.questionTextView);
questionTextView.setText(String.format(Deobfuscator.getString(0), Deobfuscator.getString(1)));
final TextView answerTextView = (TextView) findViewById(R.id.answerTextView);
answerTextView.setText(String.format(Deobfuscator.getString(2), Deobfuscator.getString(3)));
}
}
Credit
LSParanoid was forked from https://github.com/MichaelRocks/paranoid. Credits to its original author Michael Rozumyanskiy.
License
Copyright 2021 Michael Rozumyanskiy
Copyright 2023 LSPosed
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/LSPosed/LSParanoid là nguồn chính thức.
LSPosed/LSParanoid có phải mã nguồn mở không?
Có — LSPosed/LSParanoid phát hành theo license Apache-2.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/LSPosed/LSParanoid.
LSPosed/LSParanoid là gì?
LSPosed/LSParanoid (LSPosed/LSParanoid) là dự án Kotlin trên GitHub. Theo mô tả gốc: String obfuscator for Android applications
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về LSParanoid?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về LSParanoid.