怎么用手机破解收费游戏
怎么用手机破解收费游戏?
&&&&&&&&去除java游戏中的短信操作的简单教程魔掌游戏
&&&&&&& 首先来了解下利用java实现短信发送的原理,这个使用的是j2me的可选包Wireless Messaging API(WMA,JSR120)来进行操作的,这是个敏感API,在未取得授权或认证,使用之前必须提示使用者是否要进行操作。对于有的型号的手机可以直接设置程序是否可以进行短信操作。所以一般来说,不会出现无缘无故发出短信而扣费的情况,除非你设置了总是允许操作这项(相信没几个人会这么做)。当然很多免费短信软件如悠信,XROSE什么的都是利用的这个API啦。
由于设置了短信的游戏中目的只是为了收费,而且一般一条短信的价格都不菲,但是很多地方不发短信又无法继续进行游戏,那么,如果想继续免费玩下去,就得对短信操作进行处理。(一般来说发短信和连网不一样,不是必须发才可以实现结果的,同样是进下一关,网络下载就是必须进行的操作,而短信买关就不一样,那关其实是存在的,但是必须进行这一操作才可继续玩)
首先是工具,必备的工具就是java反编译软件,UE或HEX等16进制编辑器,另外为了方便查看字节码还需要jclasslib。
首先我们来看一段代码,一般的短信发送都是类似的,当然,你也可以利用这个自己写个免费发短信的东西:)
import java.io.IOE
import java.io.PrintS
import javax.microedition.io.C
import javax.microedition.io.C
import javax.wireless.messaging.*;
class SMSXX
&&&&&&&&&&&&&&&& S
&&&&&&&&&&&&&&&& String s = &发送的内容&;
&&&&&&&&&&&&&&&& boolean isSend =
&&&&&&&&&&&&&&&& void sendSms()
&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& MessageConnection messageconnection =
&&&&&&&&&&&&&&&&&&&&&&&&&& try
&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& String s1 = &sms://& + phoneN
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TextM
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& (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&);
&&&&&&&&&&&&&&&&&&& isSend =
&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&& void doSendFalse()
&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& System.out.println(&Send False&);
&&&&&&&&&&&&&&&&&&& isSend =
&&&&&&&&&&&&&&&& }
通常,发送成功之后会有个判断或者是进行接着的方法,有的发送的方法本身就返回boolean变量,如果发送成功就返回true,反之就返回false。上面的例子属于一般情况,我们可以用以下几个思路来考虑。
1.发送成功后会运行doSendOk()方法,而发送失败就会运行doSendFalse(),那么我们只要把这两个方法的位置换一下,那么即使发送失败,那么程序仍然会运行doSendOk()方法。我们用jclasslib打开该class,然后查看sendSms()方法,看字节码:
0 aconst_null
1 astore_1
2 new #31 &java/lang/StringBuffer&
6 ldc #33 &sms://&
8 invokespecial #36 &java/lang/StringBuffer.&init&&
11 aload_0
12 getfield #18 &SMSXX.phoneNum&
15 invokevirtual #40 &java/lang/StringBuffer.append&
18 invokevirtual #44 &java/lang/StringBuffer.toString&
21 astore_2
22 aload_2
23 invokestatic #50 &javax/microedition/io/Connector.open&
26 checkcast #52 &javax/wireless/messaging/MessageConnection&
30 astore_1
31 ldc #54 &text&
33 invokeinterface #58 &javax/wireless/messaging/MessageConnection.newMessage& count 2
38 checkcast #60 &javax/wireless/messaging/TextMessage&
42 astore_3
43 aload_2
44 invokeinterface #65 &javax/wireless/messaging/Message.setAddress& count 2
49 aload_3
50 aload_0
51 getfield #22 &SMSXX.s&
54 invokeinterface #68 &javax/wireless/messaging/TextMessage.setPayloadText& count 2
59 aload_1
60 aload_3
61 invokeinterface #72 &javax/wireless/messaging/MessageConnection.send& count 2
66 aload_0
67 invokevirtual #75 &SMSXX.doSendOk&
70 goto 78 (+8)
73 astore_2
74 aload_0
75 invokevirtual #78 &SMSXX.doSendFalse&
我们需要利用的就是67行和75行这两段,我们只要把这两段的位置换一下就OK。用HEX打开,定位(怎么定位请看我的另一篇文章,快速定位需要修改的16进制位置),
67行为:B6004B
75行为:B6004E
我们把004B和004E两个位置换下,保存,然后反编译看看,是不是OK了,接下来我们要做的是为了确保不发出短信出去(当然在有提示的时候按否也是一样的,但是为防止按错还是保险起见)把sms://这个改成其他字符吧,比如kim:// :),这样一运行到发短信的地方就发生异常,程序就运行catch中的doSendOk()了。
另外一种思路要你对流程很了解,不直接修改发送的代码,而是看doSendOk()和doSendFalse()这两个方法,既然发不出去会运行doSendFalse(),而doSendFalse()和doSendOk()二者只是一个变量的区别,那么我们把doSendFalse()中的&&&&&&&& isSend = false改成&&&&&&&& isSend = true,不就是和doSendOk()只是方法名之间的区别了吗,同样道理,改完后再把sms改成其他东西。(具体过程略,大家自己想想吧)。
首先讲下软件,需要下载一个名为:jclasslib的软件,并且需要***JDK,下载下来的jclasslib一般是个压缩包,解压后目录下会有个名为bin的文件夹,里面的jclasslib.exe就是可执行文件。打开该文件,界面很清楚,选择打开我们需要修改的class文件。
比如我们需要修改的文件有这样一段代码:
public boolean a(String s1, String s2)
&&&&&&& MessageConnection messageconnection =
&&&&&&& boolean flag =
&&&&&&& try
&&&&&&&&&&& String s3 = &sms://& + s1;
&&&&&&&&&&& messageconnection = (MessageConnection)Connector.open(s3);
&&&&&&&&&&& TextMessage textmessage = (TextMessage)messageconnection.newMessage(&text&);
&&&&&&&&&&& textmessage.setAddress(s3);
&&&&&&&&&&& textmessage.setPayloadText(&LS & + s2);
&&&&&&&&&&& messageconnection.send(textmessage);
&&&&&&& catch(Throwable throwable)
&&&&&&&&&&& flag =
&&&&&&& if(messageconnection != null)
&&&&&&&&&&& try
&&&&&&&&&&& {
&&&&&&&&&&&&&&& messageconnection.close();
&&&&&&&&&&& }
&&&&&&&&&&& catch(Exception exception)
&&&&&&&&&&& {
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&&&&&&
&&&&&&& } else
&&&&&&&&&&&
如果我们想把所有的true改成false。
在打开的class文件中左边会看到一系列菜单:
分别表示常量池,接口,域,方法,我们需要修改的是方法a(String s1, String s2),所以我们双击Methods,可以看见该class中的所有方法,我们找到我们需要修改的方法a,如果有很多a方法,可以对比反编译软件反编译的方法顺序来定位。我们找到a方法:
双击code,查看虚拟机指令:
& 0 aconst_null
& 1 astore_3
& 2 iconst_1
& 3 istore 4
& 5 new #105 &java/lang/StringBuffer&
& 9 invokespecial #106 &java/lang/StringBuffer.&init&&
12 ldc_w #676 &file://&
15 invokevirtual #107 &java/lang/StringBuffer.append&
18 aload_1
19 invokevirtual #107 &java/lang/StringBuffer.append&
22 invokevirtual #112 &java/lang/StringBuffer.toString&
25 astore 5
27 aload 5
29 invokestatic #677 &javax/microedition/io/Connector.open&
32 checkcast #678 &javax/wireless/messaging/MessageConnection&
35 astore_3
36 aload_3
37 ldc_w #679 &text&
40 invokeinterface #680 &javax/wireless/messaging/MessageConnection.newMessage& count 2
45 checkcast #681 &javax/wireless/messaging/TextMessage&
48 astore 6
50 aload 6
52 aload 5
54 invokeinterface #682 &javax/wireless/messaging/Message.setAddress& count 2
59 aload 6
61 new #105 &java/lang/StringBuffer&
65 invokespecial #106 &java/lang/StringBuffer.&init&&
68 ldc_w #683 &LS &
71 invokevirtual #107 &java/lang/StringBuffer.append&
74 aload_2
75 invokevirtual #107 &java/lang/StringBuffer.append&
78 invokevirtual #112 &java/lang/StringBuffer.toString&
81 invokeinterface #684 &javax/wireless/messaging/TextMessage.setPayloadText& count 2
86 aload_3
87 aload 6
89 invokeinterface #685 &javax/wireless/messaging/MessageConnection.send& count 2
94 goto 102 (+8)
97 astore 5
99 iconst_1
100 istore 4
102 aload_3
103 ifnull 122 (+19)
106 aload_3
107 invokeinterface #687 &javax/microedition/io/Connection.close& count 1
112 goto 119 (+7)
115 astore 5
117 iconst_1
118 ireturn
119 iload 4
121 ireturn
122 iconst_1
123 ireturn
接下来我们对照虚拟机指令表:
(0x01)对应aconst_null
(0x4e)对应astore_3
(0x04)对应iconst_1
(0x36)对应istore
那么我们用Hex Workshops打开该class文件,搜索16进制关键字:014E0436,很快我们就定位到需要修改的地方了。
我们把该位置附近的0336和03AC修改成0436和04AC,保存,然后再看看:
public boolean a(String s1, String s2)
&&&&&&& MessageConnection messageconnection =
&&&&&&& boolean flag =
&&&&&&& try
&&&&&&&&&&& String s3 = &file://& + s1;
&&&&&&&&&&& messageconnection = (MessageConnection)Connector.open(s3);
&&&&&&&&&&& TextMessage textmessage = (TextMessage)messageconnection.newMessage(&text&);
&&&&&&&&&&& textmessage.setAddress(s3);
&&&&&&&&&&& textmessage.setPayloadText(&LS & + s2);
&&&&&&&&&&& messageconnection.send(textmessage);
&&&&&&& catch(Throwable throwable)
&&&&&&&&&&& flag =
&&&&&&& if(messageconnection != null)
&&&&&&&&&&& try
&&&&&&&&&&& {
&&&&&&&&&&&&&&& messageconnection.close();
&&&&&&&&&&& }
&&&&&&&&&&& catch(Exception exception)
&&&&&&&&&&& {
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&&&&&&
&&&&&&& } else
&&&&&&&&&&&
已经完成了修改
阅读本文后您有什么感想? 已有
人给出评价!
04-10-0804-10-0704-10-0704-10-0704-10-0704-10-0704-10-0704-10-07
注:您的评论需要经过审核才会显示出来
Copyright &
PC6下载().All Rights Reserved
备案编号:湘ICP备号经验1440 米
在线时间209 小时
版本V8.0.2.0.KHCCNDG
积分 1833, 距离下一级还需 167 积分
积分 1833, 距离下一级还需 167 积分
机型红米手机1S WCDMA 3G版
签到次数74
MIUI版本V8.0.2.0.KHCCNDG
来自网页版
我玩了很多收费单机游戏(网游除外)这个方法可以说是百分之90破解成功短信收费,外话不多说了教程如下:1,***好游戏,授权管理必须禁止这个游戏发短信(最好是不给它授权),手机进入飞行模式安全点,进入游戏需要短信开通关卡的(有些余额大的需要支付宝支付别去选),点确定到最后一步要点拒绝支付,这样它自己就破解支付了,好了可以无限刷金币啦!这方法很多游戏都管用,捕鱼达人2啊什么的还坑爹么?觉得好的话就顶一个!
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
不是网游的话直接【八门神器】搞定!哪用得着这么麻烦?!&
在线时间10 小时
版本ICS21.0
积分 101, 距离下一级还需 99 积分
积分 101, 距离下一级还需 99 积分
机型小米手机1/1S
MIUI版本ICS21.0
来自网页版
hao 好好好
经验2097 米
在线时间362 小时
版本3.9.13
积分 2598, 距离下一级还需 2402 积分
积分 2598, 距离下一级还需 2402 积分
机型努比亚Z7 mini
签到次数46
MIUI版本3.9.13
来自网页版
经验1807 米
在线时间89 小时
版本6.5.19
积分 1931, 距离下一级还需 69 积分
积分 1931, 距离下一级还需 69 积分
机型红米手机2 联通版/电信版
签到次数149
MIUI版本6.5.19
来自网页版
经验7363 米
在线时间267 小时
版本6.10.27
VIP荣誉内测组
积分 8435, 距离下一级还需 11565 积分
积分 8435, 距离下一级还需 11565 积分
机型小米手机4
签到次数164
MIUI版本6.10.27
来自网页版
看看看!!!!
经验609 米
在线时间21 小时
积分 730, 距离下一级还需 1270 积分
积分 730, 距离下一级还需 1270 积分
机型小米手机1/1S
签到次数39
MIUI版本4.1.3
通过手机发布
支持顶下,
经验2296 米
在线时间255 小时
版本4.12.26
【MIUI批评组】如果批评不自由,那么再好赞美都毫无意义!
积分 2774, 距离下一级还需 2226 积分
积分 2774, 距离下一级还需 2226 积分
机型小米手机2/2S
签到次数89
MIUI版本4.12.26
通过手机发布
我主要来凑热闹得!!
经验532 米
在线时间112 小时
版本ICS24.0
积分 698, 距离下一级还需 1302 积分
积分 698, 距离下一级还需 1302 积分
机型小米手机1/1S
签到次数14
MIUI版本ICS24.0
来自网页版
经验725 米
在线时间181 小时
版本4.8.22
积分 998, 距离下一级还需 1002 积分
积分 998, 距离下一级还需 1002 积分
机型小米手机1/1S
签到次数10
MIUI版本4.8.22
来自网页版
好好好,顶顶顶
经验200 米
在线时间45 小时
版本ICS24.0
积分 297, 距离下一级还需 203 积分
积分 297, 距离下一级还需 203 积分
机型小米手机1/1S
签到次数14
MIUI版本ICS24.0
通过手机发布
够烂的,,直接修改短信中心号码就好了,,何必那么麻烦
MIUI 2000万
MIUI 2000万发烧友纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
MIUI三周年
MIUI三周年纪念勋章
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI 100周
100周发布纪念勋章
小米手机元器件合体活动勋章
小米求合体勋章
已关注微信
MIUI 3000万
MIUI 3000万发烧友纪念勋章
Copyright (C) 2016 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号