如法炮制《雷霆战机》飞行射击手游开发–防破解

本文将介绍一个简单易行的防破解版的点子,希望能够跟大家一道座谈上。

强调开发人员的劳动成果。未经允许要无转载

 

游玩简单介绍:

   
目前极广泛也是最好简易的单机游戏破解方法就是是直接倒编译apk,然后找三死运营商的计费函数调用代码,然后粗暴的将开结果强制改变吗成功,然后用破解者自己之keystore打包发布。下面我们若介绍的备破解方法,就是检查keystore是否给撤换,一旦发现更换,就直接退出游戏。

同一款益智棋类游戏。通过个别枚棋子对达成对方的一模一样枚棋子便只是击杀对方。

 

打闹界面可以简洁。游戏规则简单明了,AI聪明有趣。

1、执行命令keytool -list -v -keystore thorqq.keystore ,
其中thorqq.keystore改成为你的秘钥库文件称。

人们对战,人机对战,固定时间,固定步数,分享系统。让游玩内容越助长。

拿尽结果中MD5后面的平等丰富串字符串去丢冒号并改变吗小写后保存下来(在此间是:3f8e70eea5bedb593525623c0c47822f)。

赶忙下充斥来打吧!

图片 1

APP下载地址:

2、在android工程中新建MyApplication.java,增加如下代码获取apk包签名的md5价值。

http://www.mumayi.com/android-853293.html

private static String FingerprintMd5 = "";

    public static String getFingerprintMd5()
    {
        return FingerprintMd5;
    }

    public Signature[] getRawSignature(Context context) {

        PackageManager pkgMgr = context.getPackageManager();
        PackageInfo info = null;
        try {
            info = pkgMgr.getPackageInfo(getPackageName(),
                    PackageManager.GET_SIGNATURES);
        } catch (PackageManager.NameNotFoundException e) {
            return null;
        }
        if (info == null) {
            return null;
        }
        return info.signatures;
    }

    private static String FingerprintMd5 = "";

    public String stringToMD5(byte[] string) {  
        byte[] hash;  

        try {  
            hash = MessageDigest.getInstance("MD5").digest(string);  
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();  
            return "";  
        } catch (Exception e) {  
            e.printStackTrace();  
            return "";  
        }  

        StringBuilder hex = new StringBuilder(hash.length * 2);  
        for (byte b : hash) {  
            if ((b & 0xFF) < 0x10)  
                hex.append("0");  
            hex.append(Integer.toHexString(b & 0xFF));  
        }  

        return FingerprintMd5 = hex.toString();  
    }  

   @Override
    public void onCreate() {

        //MD5 fingerprint
        stringToMD5(getRawSignature(this)[0].toByteArray());

        super.onCreate();
    }

洋洋其他娱乐要关注:

3、在cpp工程中增加检查指纹的函数,比较起java中获得之md5值与我们自己之md5是否一律,如果无平等,则觉得指纹错误,返回false

http://blog.csdn.net/haomengzhu

    bool checkFingerprint()
    {    
        //check fingerprint
        JniMethodInfo minfo;
        bool isHave = JniHelper::getStaticMethodInfo(minfo,
            "org/cocos2dx/cpp/MyApplication", "getFingerprintMd5", "()Ljava/lang/String;");
        //没有在java中找到getFingerprintMd5这个函数
        if (!isHave)
        {
            return false;
        }
        else
        {
            //调用getFingerprintMd5  
            jstring jstr = (jstring)minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
            std::string ret = JniHelper::jstring2string(jstr);

            Analytics::getInstance()->event(AnalyticsEvent::FingerPrint, ret.c_str());
            GameData::getInstance()->setValue(GAMEDATA::FINGER_PRINT, ret);

            //这里就是上面我们在keytool命令后保存的md5指纹。为增加破解难度,这里最好要对字符串进行加密处理
            std::string a = "3f8e70eea5bedb593525623c0c47822f";
            //判断指纹是否一致
            if (a != ret)
            {
                return false;
            }
        }

        return true;
    }

过剩其他娱乐开始源请前往:

4、在上层业务逻辑中调用checkFingerprint(),如果回到false,则提示用户并一直退出游戏。

cocos2d-x
手游源代码站

 

游玩截图:

本游戏正式放源代码啦~~

图片 2图片 3图片 4图片 5图片 6

代码库:https://git.oschina.net/thorqq/RaidenFree

Win版试玩:http://pan.baidu.com/s/1hsbrUug

发表评论

电子邮件地址不会被公开。 必填项已用*标注