首页
社区
课程
招聘
[旧帖] [求助]新手求问pc小波大神的一篇破解安卓程序帖子的实现方法 0.00雪花
发表于: 2014-11-24 19:21 1782

[旧帖] [求助]新手求问pc小波大神的一篇破解安卓程序帖子的实现方法 0.00雪花

2014-11-24 19:21
1782
http://www.kanxue.com/bbs/showthread.php?t=153295
网址如上
我是纯小白 只有C和汇编语言的基础
尝试着破解安卓程序,利用了apktool Dex2jar 和jdgui
最后也破解成功了,帖子中指出的函数也找到了
但是有一点卡壳了
就是第二个安卓程序的破解
找到核心算法之后,大神是编写了注册代码
这个注册代码要在哪里编写啊?我用软件破解出的JAVA语言形式的程序不允许改动
难道要另写一个JAVA程序?
又是怎么运行这个注册代码,从而得到注册码的?
新人很多不懂的地方 请大家多多包涵

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 47
活跃值: (386)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也 不懂 ,哈哈 我是小小白
2014-11-24 19:54
0
雪    币: 2
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

1) 只要你获取到 deviceId 值,用什么代码都行, 只是把算法翻译成不同的语言


2)最简单的办法就是新建一个android 工程,直接获取到key 。比如下面的:

private void getHashId() {
  String imei = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId()
  Log.d("test", imei);

  try {
    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
    messageDigest.update(imei.getBytes(), 0, imei.length());
    byte[] inPut = messageDigest.digest();
    byte[] outPut = new byte[inPut.length];
    int j = 0;
    for(int i = 0; j < inPut.length; ++i) {
      int tmp = 0;
      if (j < (inPut.length - 1)) {
        tmp = j + 1;
      }

      outPut[i] = ((byte)(inPut[j] ^ inPut[tmp]));
      j += 2;
    }

    String result = new BigInteger(1, outPut).toString(16).substring(0, 15);
    Log.d("test", "result: " + result);

  } catch (Exception e) {}

}

上面的变量本来是v0, v1啥的,直接从JEB那边copy过来的,我只是把变量名换了一下


现在逻辑就很清晰了,主要是 前一位跟后一位 异或运算, 翻译成别的语言也不成问题

2017-3-14 09:33
0
游客
登录 | 注册 方可回帖
返回
//