怎样破解ZelixKlassMaster的字符串加密?

23小时前 (12:31:30)阅读2回复0
yk
yk
  • 管理员
  • 注册排名3
  • 经验值36010
  • 级别管理员
  • 主题7202
  • 回复0
楼主

  反编译 Java 小法式,而且改变为代码都很难,人们为了寻找隐藏的动静经常丢失在 java 代码中。一种办法就是打乱行号,替代所有的 classes 的名称, 办法和变量,我们 将会发现我们所需要的:字符串加密。

阐发代码你所需要的东西:

- Java 反编译器 (例如:JAD)

- 编纂东西 (例如:vim)

- 觉得才能 (例如:大脑)

更好可以有些 JVM 的常识, 不外不懂也不消担忧,在那儿我会把一切都告诉你的。

   但是想要造做你本身的破解法式,你就必然需要那些常识了。

要做弊 Java 游戏,你所需要的东西:

- TCP 嗅探器 (例如:tcpdump)

- 撑持 Java 的阅读器 (例如:Mozilla)

- C 编译器 (例如:gcc)

- GNU 的东西 (例如:grep)

- 撑持 PHP 的办事器 ;-)

第一步:是什么呢?

当然是寻找破解的目的喽 :) 在 Coca~Cola’s 主页上的游戏看起来不错(nordic)。

  翻开 TCP 嗅探器(tcpdump -w file), 运行游戏。玩一会,然跋文录你的分数。TCP 嗅探器能够停行了。翻开记录文件(vi file)。在文件中寻找你的分数,你应该看到那一行:

GET /magazine/servlet/SetHighscoreServlet?score=6324game=0cookie=yournamemd5=c404cd019e1a214487cd4c841

我们所要处理的就是 md5 的数值是怎么生成的,那么我们就能够做弊,本身加分数了。

第二步:反编译和阐发

下载游戏的 。jar 文件夹(提醒: 查看源文件,

标签中的 archive=。。。), 解开后,反编译每一个 class 文件。如今试着在代码中查找返回数据到办事器的处所

(fgrep -rn "URL" *)。

   b/a/a。java 的第 122 行 (用 jad 反编译的成果) 看起来能够做为我们起头的处所:

URL url = new URL(c, b("L9\001 qMdK|)\016rZ!\f\007cfg8\ndMa-\007DK|)

\016rZ1,\001x\\kb") + Integer。

  toString(i) + b("DpOc:_") + d + b("DtA

a4\013r\023") + e + b("DzJ;b") + a。a。a。a。a。a(i, Integer。parseInt(d), e));

URL 看起来是如许的:

"long text"+i+"text"+d+"text"+e+"text"+result_of_calculation(i,d,e)

如今的问题是"那些是不是我们看到的字符串?"(没关系张嘛~) 和 " a。

  a。a。a。a。a() 都干了些什么?"。

翻开文件 (vi b/a/a。java) 到 122 行。我们能够看到加密字符串的办法是 b() 。 查看 b() (line 224)。是如许的:

224:

private static String b(String s)

225:

226:

char ac[];

227:

int i;

228:

int j;

229:

ac = s。

  toCharArray();

230:

i = ac。

  length;

231:

j = 0;

232:

goto _L1

233: _L9:

234:

ac;

235:

j;

236:

JVM INSTR dup2 ;

237:

JVM INSTR caload ;

238:

j % 5;

239:

JVM INSTR tableswitch 0 3: default 76

240:

0 52

241:

1 58

242:

2 64

243:

3 70;

244:

goto _L2 _L3 _L4 _L5 _L6

245: _L3:

246:

0x62;

247:

goto _L7

248: _L4:

249:

23;

250:

goto _L7

251: _L5:

252:

46;

253:

goto _L7

254: _L6:

255:

14;

256:

goto _L7

257: _L2:

258:

95;

259: _L7:

260:

JVM INSTR ixor ;

261:

(char);

262:

JVM INSTR castore ;

263:

j++;

264: _L1:

265:

if(j

全数

0
回帖

怎样破解ZelixKlassMaster的字符串加密? 期待您的回复!

取消