分析wlpkcheng老铁的吃鸡辅助注册码算法
本帖最后由 凉生我怕怕 于 2017-12-21 14:21 编辑# 哈哈 才发现论坛能用MarkDown了开心开心
### ok 言归正传本教程是语音视频教程,文字我就少打了哈 看完视频的老铁 麻烦还是 回来点个赞给个热心 感谢感谢 下载地址在最下面
### 老铁们 热心是免费的 不用白不用挖点个热心呗
> 昨天逛论坛的时候看到一位老铁 @wlpkcheng 的帖子[点我达到](https://www.52pojie.cn/thread-677470-1-1.html)
> 大概看了一下,感觉老铁写帖子的逻辑有点乱啊,看的我也有点迷糊.不过最终这位老铁用另一位大神写的一个计算器把注册码算出来了 所以就没去分析算法
> 我这里来为大家分析一下算法,顺带把apk逆向的基础也大概说说,我用的是AndroidKill,不熟悉的人也可以用安卓改之理哈大概的 内容就是带大家怎么看安卓代码里面的加密算法然后写出注册机出来. 本人也是菜鸟,大神勿喷,旨在于为更新手的人提供入门教程而已.
- 这个是吃鸡辅助软件的界面 图片都用的是@wlpkcheng 老铁的 哈哈 恕我太懒
![](https://attach.52pojie.cn/forum/201712/20/092333g3459zuocdhyc3c5.png)
> 我还是大概图文描述一下步骤吧 更具体的 建议看视频 可以在线看的
- 第一步
![](http://ww1.sinaimg.cn/large/e38a7f8bgy1fmob7m47k7j21hc0tegqb.jpg)
- 第二步
![](http://ww1.sinaimg.cn/large/e38a7f8bgy1fmob7ujunxj20z00mo76w.jpg)
- 第三步 这里第三部的hex2bate是 第二部图中的 ' paramString = hex2byte(paramString);'这行代码调用的
![](http://ww1.sinaimg.cn/large/e38a7f8bgy1fmob82aq1tj20z00moq5t.jpg)
接下来怎么写注册机 就得看视频了 老铁们
- 下面是最终的注册机代码 我用java写的
``` java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class TestJm {
public static void main(String[] args) {
String str = "1111z111"; // 明文
String de = "";
// de = de("8060509d4a7237f98e7d86c8723144dc");
try {
de = en(str);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(de);
}
public static String de(String paramString) {
if (paramString == null) {
return (String) null;
}
SecretKeySpec localSecretKeySpec;
Cipher localCipher;
if ("Format2044153997".length() != 16) {
return (String) null;
}
try {
localSecretKeySpec = new SecretKeySpec("Format2044153997".getBytes("ASCII"), "AES");
localCipher = Cipher.getInstance("AES");
localCipher.init(Cipher.DECRYPT_MODE, localSecretKeySpec);
byte[] bytes = localCipher.doFinal(hex2byte(paramString));
paramString = new String(bytes);
return paramString;
} catch (Exception e) {
paramString = (String) null;
e.printStackTrace();
return paramString;
}
}
// 12345
public static byte[] hex2byte(String paramString) {
if (paramString == null) {
return (byte[]) null;
}
int j = paramString.length();
// 用户输入的秘钥 必须是2的倍数
if (j % 2 == 1) {
return (byte[]) null;
}
// 返回数组长度为 用户输入 秘钥长度的一半
byte[] arrayOfByte = new byte;
int i = 0;
for (; ; ) {
if (i == j / 2) {
return arrayOfByte;
}
arrayOfByte = ((byte) Integer.parseInt(
// 第一次是取下标01的值
// 第二个是取23 的值
paramString.substring(
//开始处的索引(包括)。
i * 2,
//结束处的索引(不包括)。
i * 2 + 2
)
, 16));
i += 1;
}
}
public static String en(String paramString)
throws Exception {
if ("Format2044153997" == null) {
return (String) null;
}
if ("Format2044153997".length() != 16) {
return (String) null;
}
SecretKeySpec localSecretKeySpec = new SecretKeySpec("Format2044153997".getBytes("ASCII"), "AES");
Cipher localCipher = Cipher.getInstance("AES");
localCipher.init(1, localSecretKeySpec);
return bytes2HexString(localCipher.doFinal(paramString.getBytes())).toLowerCase();
}
public static String bytes2HexString(byte[] b) {
StringBuilder ret = new StringBuilder();
for (byte aB : b) {
String hex = Integer.toHexString(aB & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret.append(hex.toUpperCase());
}
return ret.toString();
}
}
```
- 最后说几句
-这个写安卓程序的人应该是很菜很菜很菜,可以说是菜绝了.... 因为我是搞java的,看了他写的代码 直接看不下去了
-视频里面我有一个坏习惯 喜欢爆粗口,录制完了才发现,在这里提前给大家道个歉哈 sorry 千万别学我
破解以后的效果图
![](http://ww1.sinaimg.cn/large/e38a7f8bgy1fmoaionbd7j20u01hc77m.jpg)
视频教程下载链接
- 视频下载地址: [点我打开微云网盘](https://share.weiyun.com/e67d9f3fe098c928ee91c67f7c1f9f47)
12点发布的帖子下午2点就有老铁 做了详细的 图文教程了大家电这里可以 看 哈 点我打开 玩竞技游戏还开挂的,也不是什么好鸟。被劫持了也是活该。
希望吾爱不要再有竞技游戏的辅助研究和传播了。
如果是rpg类型的,你开辅助也就算了。竞技还要辅助,这就是作弊。和传播劫持的一样,不是什么好东西。一丘之貉。 @蜡笔小鑫mini 正是知道安卓毒多 才用的iPhone = = 弄死不用安卓 宁愿用Iphone5也不愿意用 三项Note7 除了开发不过我是业余安卓的哈哈我主业是java和python 厉害了!! 感谢分享 SouthCity 发表于 2017-12-21 13:50
感谢分享
点个热心老铁
厉害了我的哥!! 老哥真是厉害啊! 道理我都懂但最后一张图出现QQ号了 谢谢@Thanks! 其实我看不懂这些。木明觉厉