java认证辅导:J2ME游戏破解Java认证考试

文章作者 100test 发表时间 2010:01:01 15:50:57
来源 100Test.Com百考试题网


  最近换了一个新手机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."。这两个方法在理论上都是可行的。


相关文章


MyEclipse8下载及svn配置Java认证考试
JAVA认证辅导:非常棒的放礼花的源程序Java认证考试
Java设计模式之Flyweight模式Java认证考试
Java设计模式之模板方法模式Java认证考试
java认证辅导:J2ME游戏破解Java认证考试
SpringAOP面向方面编程原理:AOP概念Java认证考试
java认证辅导:java线程小结Java认证考试
Java认证辅导:Java数组赋值的问题Java认证考试
使用java语言中的枚举enumJava认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛