Reputation: 12395
The Anti-LVL tools make the LVL protection totally unuseful, just a click and you can get the cracked APK.
I have also try to change some switch in if-else in LVL library, to rename lvl package and methods, the tool detect LVL and remove it.
I have also tried
protected boolean isAntiLVL(){
try{
Class.forName("smaliHook");
return true;
}catch(Exception e){}
return false;
}
Without any success.
Any suggestion? How this tool identify LVL fingerprint?
Please don't reply to this question with something like
-Every protection can be cracked
-A cracker can reverse you source and crack the app anyway
Upvotes: 2
Views: 2733
Reputation: 82563
How this tool identify LVL fingerprint?
This page here clearly lists how the Anti LVL works:
Under the hood, AntiLVL is a configurable Smali code patcher with rules defined in user-modifiable XML files stored inside the jar called fingerprints. Brief summary of how it works:
- Decompiles the Apk
- Perform regular expression matching
- Carrie out defined modifications
- Recompile, update classes.dex
- Resign and zipalign
My guess is that simply messing around with package names and checking for your classes will not make a good anti Anti LVL measure.
If you don't want LVL to be cracked by off the shelf software, don't use LVL in your app. Roll your own system that monitors Google Play purchases, and checks them against your server. By doing this, you create a fingerprint different from LVL, so standard tools won't work.
However, the point that anyone can decompile your code, remove this check, and recompile it still stands. Do keep in mind though that those who use pirated copies of your app are very unlikely to have actually been paying for it in the first place, so you are losing very very few customers over this. Those who want to pay, will pay.
Upvotes: 3