手机游戏破解方法

去除java游戏中的短信陷阱操作的简单教程




首先来了解下利用java实现短信发送的原理,这个使用的是j2me的可选包Wireless Messaging API (WMA,JSR120)来进行操作的,这是个敏感API,在未取得授权或认证,使用之前必须提示使用者是否要进 行操作。对于有的型号的手机可以直接设置程序是否可以进行短信操作。所以一般来说,不会出现无缘无故发出短信而扣费的情况,除非你设置了总是允许操作这项(相信没几个人会这么做)。当然很多免费短信软件如悠信,XROSE什么的都是利用的这个API啦。 由于设置了短信的游戏中目的只是为了收费,而且一般一条短信的价格都不菲,但是很多地方不发短信又无法继续进行游戏,那么,如果想继续免玩下去,就得对短信操作进行处理。(一般来说发短信和连网不一样,不是必须发才可以实现结果的,同样是进下一关,网络下载就是必须进行的操作,而短信买关就 不一样,那关其实是存在的,但是必须进行这一操作才可继续玩) 首先是工具,必备的工具就是java反编译软件,UE或HEX等16进制编辑器,另外为了方便查看字节码还需 要jclasslib。 首先我们来看一段代码,一般的短信发送都是类似的,当然,你也可以利用这个自己写个免费发短信的东西:
import java.io.IOException; import java.io.PrintStream; import javax.microeditio.io.Connection; import javax.microedition.io.Connector; import javax.wireless.messaging.*; class SMSXX { String ph; String s = "发送的内容"; boolean isSend = false; void sendSms() { MessageConnection messageconnection = null; try { String s1 = "sms://" + phoneNum; TextMessage textmessage (textmessage = (TextMessage)(messageconnection = (MessageConnection)Connector.open(s1)).newMessage("text")).setAddress(s1); textmessage.setPayloadText(s); messageconnection.send(textmessage); doSendOk(); } catch(IOException _ex) { doSendFalse(); } } void doSendOk() { System.out.println("Send Ok"); sSend = true; } void doSendFalse() { System.out.println("Send False"); isSend = false; } }
通常,发送成功之后会有个判断或者是进行接着的方法,有的发送的方法本身就返回boolean变量,如果发送成功就返回true,反之就返回false。上面的例子属于一般情况,我们可以用以下几个思路来考虑。 1.发送成功后会运行doSendOk()方法,而发送失败就会运行doSendFalse(),那么我们只要把这两个方法 的位置换一下,那么即使发送失败,那么程序仍然会运行doSendOk()方法。我们用jclassli打开该class ,然后查看sendSms()方法,看字节码:
0 aconst_null 1 astore_1 2 new #31 5 dup 6 ldc #33 8 invokespecial #36 > 11 aload_0 12 getfield #18 15 invokevirtual #40

gBuffer.append> 18 invokevirtual #44 21 astore_2 22 aload_2 23 invokestatic #50 26 checkcast #52 29 dup 30 astore_1 31 ldc #54 33 invokeinterface #58 count 2 38 checkcast#60 41 dup 42 astore_3 43 aload_2 44 invokeinterface #65 count 2 49 aload_3 50 aload_0 51 getfield #22 54 invokeinterface #68 count 2 59 aload_1 60 alod_3 61 invokeinterface #72 count 2 66 aload_0 67 invokevirtual #75 70 goto 78 (+8) 73 astore_2 74 aload_0 75 invokevirtual #78 78 return
我们需要利用的就是67行和75行这两段,我们只要把这两段的位置换一下就OK。用HEX打开, 67行为:B6004B 75行为:B6004E 我们把004B和004E两个位置换下,保存,然后反编译看看,是不是OK了,接下来我们要做的是为了确保不发出短信出去(当然在有提示的时候按否也是一样的,但是为防止按错还是保险起见)把sms://这个改成 其他字符吧,比如kim:// :),这样一运行到发短信的地方就发生异常,程序就运行catch中的 doSendOk()了。 另外一种思路要你对流程很了解,不直接修改发送的代码,而是看doSendOk()和doSendFalse()这两个方 法,既然发不出去会运行doSendFalse(),而doSendFalse()和doSendOk()者只是一个变量的区别,那么我们把doSendFalse()中的 isSend = false改成 isSend = true,不就是和doSendOk()只 是方法名之间的区别了吗,同样道理,改完后再把sms改成其他东西。







双击HALO图标运行HALO,单击“文件名”,
打开一个需要破解或者修改的JAR文件。
3.打开jar文件后,点击“工具”--“配置”,
把“对JAR进行破解”勾上,如果不要修改游戏就把JAVAMAGIC
的修改屏幕和键位关掉。点击“应用”--“确定”,设置完成。
4.修改游戏的屏幕和键位(这步可以省略)。点击“工具”--
“配置”--“javaMagic”,开启键位修改,选择机型键值可以
“查看”,点击“修改”,可以修改屏幕宽度和高度;键位修改后
“选择API”为目标机型才可以满屏幕显示。设置完成后单击“确定”。
5.编辑(汉化)jar文件(这步可以省略)。在“工程管理器”工具栏,
纵向排列着这个JAR文件里面的所有jar“*.class”文件,
在"原文"区域双击想要修改(汉化)的字符串,在下面的翻译栏就
会显示这个字符串,左边是原文栏,右边是译文栏(可以编辑修改的),
修改(汉化)后的新字符串,单击下面的“提交”,
在上面译文栏里

面就更新了字符串!
6.完成之后,点击“工程”--“编译”,完成后点击“工程”--“打包” ,
这样破解或者修改工作就完成了。
7.破解或者修改完的JAR文件可以在电脑模拟运行测试,
点击“工程”--“运行”就打开“手机顽童模拟器”。
8.破解或者修改完的JAR文件默认存放在HALO安装目录下的
"games"文件夹(如D:\HALO\games)。也可以设置处理jar资源存放路径:
点击“工具”--“配置”--“lmage Extract”--浏览”--“确定”,
设置完成后单击“应用”--“确定


看完上面的教程后,你可以到网上去下载所需的软件,用Google搜索一下就可以了,照着破解就是了!!祝你破解成功!!

相关文档
最新文档