【问题标题】:Device IMEI locking for tablets平板电脑的设备 IMEI 锁定
【发布时间】:2011-06-24 05:17:23
【问题描述】:

在我的应用程序中,我曾经使用 IMEI 代码锁定应用程序。我的意思是在启动应用程序期间检查设备 IMEI 并将其与允许的设备列表进行比较。如果设备在列表中,用户可以继续工作,否则退出:

public boolean checkIMEI(Activity activity)
{
        TelephonyManager tm=(TelephonyManager )activity.getSystemService(Context.TELEPHONY_SERVICE);
        if(tm==null)
        {
            Log.v(TAG, "Can't get telephony service");
            new MessageBox(activity, "Can't get telephony service. Forcing shut down!");
            return false;
        }
        //encrypted IMEIs list
        String[] vals=activity.getResources().getStringArray(R.array.imeis); 
        //real device IMEI
        String deviceId=tm.getDeviceId();
        if(deviceId==null || deviceId.length() < 2)
        {
            Log.v(TAG, "Looks like emulator - bail out!");
            Toast.makeText(activity, "This special version not intended to run in this device!", 5000).show();
            return false;
        }
        boolean valid=false;
        for(String val:vals)
        {
            String imei=Checker.decryptTemp(val); //decrypt IMEIs
            if(imei.equalsIgnoreCase(deviceId))
            {
                valid=true;
                break;
            }
        }
        if(!valid)
        {
            Log.v(TAG, "Invalid device IMEI!");
            return false;
        }
    return true;
}

未配备电话服务的 Android 平板电脑存在问题。所以这些设备没有IMEI。我应该依赖哪个 id? Mac地址还是其他?此外,每次我需要询问潜在用户给我他们的设备 ID...他们怎么做?

【问题讨论】:

    标签: android locking imei


    【解决方案1】:

    如果用户足够精通,可以在模拟器中运行您的 APK,那么他就足够精通反编译并删除您的检查。

    此外,如果我是您,我会为注册和登录用户提供更多功能,而不是试图阻止未注册用户启动您的应用程序。没有什么比应用程序由于此类安全功能而出现功能障碍(想想 Steam 或 Windows Live 或 Ubisoft 臭名昭著的拒绝付费用户游戏)更令人讨厌的了。它只会促使人们盗版您的应用程序。

    【讨论】:

    • 教我如何反编译和重新编译签名的应用程序
    • stackoverflow.com/questions/3122635/…stackoverflow.com/questions/4336637/… 关于反编译。我并不是说它没有效率(需要更多的努力而不是感知的收益),但是您会挫败合法用户并且永远不会完全保护自己。这可能仍然是一个明智的商业决策,但您应该意识到风险。
    • 我计划只分发签名的应用程序,所以我不知道应用程序会如何受到损害
    • 愤怒的小鸟的开发者在某处发表了一篇关于此的博文。他们签署他们的申请,他们也混淆了他们,他们仍然被盗版。
    • 问题出在市场上未列出的国家/地区的用户中,因此他们无法获得我的应用程序,但仍在询问。我还需要在我的测试人员中分发 beta 版本。无论如何,我必须以某种方式保护我的产品,对吧?
    【解决方案2】:

    正如我写的here,使用IMEI 来识别某个设备并不是一个好主意。

    【讨论】:

      【解决方案3】:

      如果专门为手机提供 IMEI 检查可能是个好主意,使用手机功能,但这取决于国家/地区的法规。很少有国家在其移动网络中实施 EIR(设备身份注册)注册。它检查带有灰色和黑色标记的被盗和伪造的 IMEI。黑标imei不能使用手机功能,灰标为合法需要追查。如果是这种情况,那么使用imei检查将很有价值。

      【讨论】:

        猜你喜欢
        • 2011-08-18
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 2018-04-27
        • 2012-10-29
        • 1970-01-01
        • 2014-06-13
        • 1970-01-01
        相关资源
        最近更新 更多