j2me游戏-皇家骑士团破解
2019-06-16 本文已影响0人
超威蓝猫l
皇家骑士团 是诺基亚时代喜欢玩的一款游戏,突然之间就想重新玩玩。
但是发现有的关卡过不去了,就动了修改的念头。
游戏界面
首先将游戏扔进去,以下是游戏目录
image.png通过逐个查看,可以发现lang.dat,是游戏的所有文字,由此,我们从这里切入。
image.png
我们开个项目,遍历出所有的文字与序号
image.png
其中可以发现其中76可以作为切入点,每局的收入做手脚
全局搜索lang.dat可以找到解析入口,如下:
public static int a(String str, boolean z) throws Exception {
DataInputStream dataInputStream = new DataInputStream(GameMidlet.a.getClass().getResourceAsStream(str));
bt = new String[dataInputStream.readInt()];
int length = bt.length;
for (int i = 0; i < length; i++) {
bt[i] = dataInputStream.readUTF();
}
dataInputStream.close();
return bt.length;
}
可以看出bt是这些文字的集合
继续追踪可以发现,是这个方法再查找调用
public static String a(int i, boolean z) {
if (i >= bt.length) {
return new StringBuffer().append("?: ").append(i).toString();
}
String str = bt[i];
if (!z) {
return str;
}
str = a.a(a.a(a.a(a.a(str, "%K5", "'5'", true), "%K0", "'0'", true), "%K7", "'7'", true), "%K9", "'9'", true);
if (str.indexOf("%KM") == -1) {
return str;
}
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(a.a(17, new String[]{cV.j(1), cV.j(2), cV.j(4), cV.j(8)}));
if (stringBuffer.length() > 0) {
stringBuffer.append('/');
}
stringBuffer.append(a.g(18));
return a.a(str, "%KM", "'2','8','4','6'", true);
}
进一步查找 是a类里面的这个方法总调用
public static String g(int i) {
return a.a(i, false);
}
接下来搜索76
image.png
可以看到判断是不是1 1是自己 其他就是打印289这个值 289这个值是敌方保密
image.png
搜索这个dc一路跟踪,可以发现f类的E方法
是
最后的地方赋值给cb 这个cb就是我们的金钱
我们考虑从这里入手
如4561行所示,添加以下,然后每局都会加1000金币,无视建筑
const/16 v4,0x3e8
Screenshot_2019-06-16-15-51-17-205_bin.mt.plus.png