J2ME游戏破解心得之二

原创 2011年01月18日 22:40:00

   上一次一篇《J2ME游戏破解心得暨反编译字节码操作研究》记录了我破解一款RPG游戏的短信计费代码,不出一个月,被许许多多的网站转载,而且没有注明出处。当然,这到不是最重要的,重要的是大家学会了破解的方法。
      最近在破解另一个深受大家喜爱的游戏时(名字我还是不提了),遇到了和上次不同的问题,虽然都是发送短信计费,但代码的结构和逻辑发生了比较大的变化。上次破解时,关于发送短信的判断比较简单,就是成功了就返回成功,失败了捕捉异常返回失败,破解点也就显得简单,只需把返回失败的地方改成返回成功就行了。而这次是使用了一个匿名的线程类,发送时启动一个线程去处理,外部通过一些发送的状态变量值来判断。该类对应的文件是b.class,而匿名的线程类被编译到b$1.class中。b$1.class文件反编译出的代码如下:

 

 

 

可见要发送两次短信进行计费(心太黑了),b.try就是外部用于判断是否发送够的标志,发送够之后还做了其他一些事情。可见,用上一次的更改true、false不行了。网上也有一个例子是sendOK和sendFalse两个函数交换位置的,在这里也行不通。

我尝试了更改字节码,但发现在需要更改这样较多的字节码时,很难做到不出错。最后还是想到用javassist来处理,思路就是把messageconnection.send(textmessage);这一句“干掉”,当然,你也可以把MessageConnection相关的都“干掉”,那样连提示发送短信都没有了。

经过多方查找,找到了CtMethod的instrument方法,该方法可以对method内部的每一个表达式进行判断、替换,下面就来看看“干掉”send调用的代码:

 

 

 

 

 

 

这个ExprEditor的意思就是,当表达式是调用MessageConnection类的send方法时,对该调用进行替换,我这里是替换成空字符串。

至此,该类替换完毕。反编译替换后的b$1.class代码变成以下:

 

 

 

 

send那一行代码的确没有了,但多了两行这样的代码:

            TextMessage textmessage1 = textmessage;
            MessageConnection messageconnection1 = messageconnection;
不知道是为什么,但明显这两行对整个方法没有影响。

重新打包进jar,放在手机上测试,成功!

注意:

由于这是J2ME的程序,破解时最好新建一个J2ME的项目,尽管实际上就是一般的java控制台程序。因为我之前用java项目,class是改了,但是打进jar包运行要出错,而在J2ME项目下,修改后的class打进jar包是成功运行了的。

 

Unity3D游戏开发之路:我的一周工作总结

大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是http://blog.csdn.net/qinyuanpei。        到公司上班已经一周了,趁着今天周末休息的时间,想将最近在工作和生...
  • qinyuanpei
  • qinyuanpei
  • 2015年05月23日 18:21
  • 4086

Unity3D游戏资源的提取

前言 在游戏中看到一张优美的画面,想作为手机壁纸;听到一首好听的音乐,想作为手机铃声。想啊 但是怎么找到它们啊?这就是资源的提取,下面我就说说对他们的浅显认识。 Unity资源的存在形式 ...
  • zihao2012
  • zihao2012
  • 2014年09月16日 22:20
  • 11771

国服游戏封包解密-外挂制作全过程

[软件]国服游戏-路尼亚战记 [工具]OD,Wep,以及其它的一些文本工具 [目的]研究游戏保护技术,深论协议级分析。 意在抛砖引玉,抵制游戏外挂。我会在每个分析点做出一些保护上的思考。 ...
  • liujiayu2
  • liujiayu2
  • 2016年06月22日 17:23
  • 2763

J2ME 拼图游戏 快速开发 全过程 (二)——游戏开始界面设计

源码: /*  * Created on 2004-6-20  *  * TODO To change the template for this generated file go to ...
  • love254443233
  • love254443233
  • 2012年04月14日 13:24
  • 1150

一步步实现j2me游戏引擎(二),游戏虚拟键值

一步步实现j2me游戏引擎(二),游戏虚拟键值
  • tom_221x
  • tom_221x
  • 2011年04月18日 17:39
  • 966

J2ME开发手机游戏物理模型之抛物线

原文地址http://www.hbjjrb.com/Jishu/jsp/200704/7581.html     物体做抛物线运动是游戏中基本运动物理模型之一!...
  • luonan0706
  • luonan0706
  • 2012年12月04日 22:09
  • 554

J2ME 拼图游戏 快速开发 全过程 (六)——图片设置界面设计

代码: package cn.edu.xtu.tilepuzzle.ui; import java.io.IOException; import java.util.Vector; ...
  • love254443233
  • love254443233
  • 2012年04月14日 13:38
  • 944

j2me上的script-各种脚本引擎的介绍和在游戏中的应用(1)

脚本语言,相信大家都不陌生。 j2me上开发游戏,脚本的使用还是挺广泛的。 甚至,能用一个脚本去写一个游戏,而程序主体只需要控制重绘。 当然,需要你有这样的功底,设计好游戏的引擎。   j2...
  • a460162314
  • a460162314
  • 2012年03月31日 11:33
  • 410

j2me学习五_翻译教程-牧羊犬游戏1

一.游戏的实现包含类SheepDogMIDlet主游戏类,负责控制和管理各个屏幕和组件还有它们之间的联系。SplashScresn闪屏类,在屏幕中央显示一幅图像,同时程序在后台初始化。MenuList...
  • qp120291570
  • qp120291570
  • 2011年07月27日 22:55
  • 1069

J2ME游戏开发的高级优化技巧

为什么要优化?   游戏能够被划分为两种较广泛的类型:实时型和按键驱动型。按键驱动类型的游戏一般在屏幕上显示游戏目前所处的状态,并且等待玩家输入某些按键来驱动游戏继续运行。棋牌类游戏,大部分的解谜类...
  • kuokuo_xiaxia
  • kuokuo_xiaxia
  • 2014年04月07日 11:23
  • 267
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2ME游戏破解心得之二
举报原因:
原因补充:

(最多只允许输入30个字)