求如何mrp破解游戏下载国产手机mrp游戏收费

红软基地:您身边最放心的安全下载站!
您所在的位置:&>&&>& > 国产手机mrp格式游戏软件大全
国产手机mrp格式游戏软件大全
软件类型:
软件语言:
软件大小:
软件授权:
软件评级:
更新时间:
应用平台:
WinXP, Win7, WinAll
同类推荐软件
mrp软件MRP格式游戏,是由【杭州斯凯网络科技有限公司】开发的一种轻量级的虚拟平台MINIJ平台格式文件,可以说它是国产机专用游戏格式,目前MRP程序的应用范围还是比较广的,国内普遍的手机(包括国产的贴牌、杂牌、品牌,已经数量极其庞大的其它山寨机都带有这个平台)
国产手机mrp格式游戏软件截图
红软基地破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。
软件下载地址
国产手机mrp格式游戏软件大全
热门关键词
热门软件推荐怎么用手机破解收费游戏
怎么用手机破解收费游戏?
&&&&&&&&去除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备号

参考资料

 

随机推荐