J2ME游戏如何破解?

1个月前 (10-13 10:24)阅读2回复0
lrj
lrj
  • 管理员
  • 注册排名2
  • 经验值50645
  • 级别管理员
  • 主题10129
  • 回复0
楼主

  比来换了一个新手机samsung F488E,毕竟能够在本身的手机上耍耍游戏了(以前开发J2ME的游戏,都是用的公司测试机)。于是疯狂的下载了一些合适触摸屏240*320的 java游戏,此中有一款RPG游戏玩得很高兴,可惜某些处所要发短信收费,一气之下动了破解的念头。

  以前做过J2ME的开发,熟知J2ME法式城市在最末发布的时候停止混淆编译,一是制止法式被反编译,二是能够大大的减小法式包体积。

破解的思绪很简单:找到现实挪用发送接口的办法,让它始末返回“发送胜利”,于是多种东西齐上阵就起头干了。

起首需要把class文件都反编译出来,java反编译东西良多,网上评论也不尽不异,但我试过良多,面临混淆后的字节码,表示得都一样。

  我利用的是XJad。颠末一番查找,找到如许一个办法:

view plaincopy to clipboardprint?

private static boolean a(String s1, String s2)

MessageConnection messageconnection;

TextMessage textmessage = (TextMessage)(messageconnection = (MessageConnection)Connector。

  open(s1))。newMessage("text");

if (ad。a(messageconnection) || ad。a(textmessage))

return false;

textmessage。setAddress(s1);

textmessage。

  setPayloadText(s2);

messageconnection。send(textmessage);

messageconnection。close();

return true;

JVM INSTR pop ;

return false;

private static boolean a(String s1, String s2)

MessageConnection messageconnection;

TextMessage textmessage = (TextMessage)(messageconnection = (MessageConnection)Connector。

  open(s1))。newMessage("text");

if (ad。a(messageconnection) || ad。a(textmessage))

return false;

textmessage。setAddress(s1);

textmessage。

  setPayloadText(s2);

messageconnection。send(textmessage);

messageconnection。close();

return true;

JVM INSTR pop ;

return false;

毫无疑问,那就是现实发送短信的处所了。

  我曾试着把所有反编译过来的java文件中的错误全数改掉,里面有良多参差不齐的代码,最末天然是编译通过,但不克不及运行。

接下来,就要针对那个办法做处置了,有两个思绪:一是间接修改字节码,把上述的"return false"的处所通盘改成"return true";二是在那个办法的起头参加那段代码"if(true)return true;"。

  那两个办法在理论上都是可行的。

0
回帖

J2ME游戏如何破解? 期待您的回复!

取消