26 123
发新话题
打印

[教程] 【漫步云端】JAR游戏短信收费破解教程

本主题由 fengyun_8 于 2008-10-18 21:37 推荐主题

【漫步云端】JAR游戏短信收费破解教程

引用:
现在越来越多的朋友
喜欢玩破解版的游戏
所以一直在上网的找
现在不用有这个顾虑
自己来破解JAR游戏
玩自己破解的游戏吧




那么先下载破解需要的工具“破解工具HALO”





以上3个全部下载随意解压其中一个就可以,随意放在哪里都可以。
HALO需要运行平台(这步很重要!!)
jdk-1_5_0-windows-i586
http://192.168.1.2/uploadfiles/jdk-1_5_0-windows-i586.exe 点击下载






请认真看帖子,按帖子说的一步一步来肯定没问题的。

第一:双击已下载好的HALO.EXE  (电脑装JAR平台才打得开)



选择文件名的 第一个打开JAR文件 在文件里选择你要破解的游戏
以诛仙传说 做例子 如下边的图







第二: 选择工具---配置--- 选择对JAR进行破解 --然后点确定 如下图



第三: 按-工程-编译-工程-打包  一定要这个顺序才可以 如下图

编译




打包



打包好过后在工程-运行 可以试玩游戏。也是手机顽童感觉效果不是很好。可以到下面下载最新版本的手机顽童试玩!

破解好游戏如下图寻找游戏  在games文件夹里


三个文件为:SRC    PROJECT  
BUIID文件夹,为破解中产生的,破解成功后可删除。

蓝的就是破解好的游戏






友情提示,JAR不支持中文名字的手机改下名字就可以。只要不是中文什么都可以。
破解游戏就是这么简单,你还在犹豫什么,赶快找到你喜欢的游戏,体验游戏自己破解的感觉。




再发个JAR模拟器,破解完成后可以在电脑上试玩下。




手机顽童在电脑上玩JAR的模拟器



JAR破解原理在五楼有兴趣的朋友可以去看看!
      已破解过的游戏在次破解遇到发短信收费的地方游戏会推出。
破解过的,只能在改改文字。

      此破解方法对于JAR网络游戏是没有用,网络游戏本身就不存在游戏中短信收费,目前发现了几款游戏对HALO做了调整。破解过后他收不了费,我们也得不到发短信能得到的内容!


顺便送上刚才破解的诛仙







(注:下载后记得改下名字!我没有试玩,不敢保证每个游戏100%破解。为了安全起见,调成离线玩时发短信看看。在去通讯记录看看有发短信给SP的信息吗?没有的话就是破解成功!)

[ 本帖最后由 willian0429 于 2008-10-27 20:15 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • piaoyao321200 诺币 +10 来玩了,感谢分享 2008-10-20 00:57
  • piaoyao321200 资源值 +10 来玩了,感谢分享 2008-10-20 00:57
  • piaoyao321200 爱心值 +10 来玩了,感谢分享 2008-10-20 00:57
  • fengyun_8 诺币 +16 感谢分享 2008-10-3 23:08
  • fengyun_8 技术值 +4 感谢分享 2008-10-3 23:08

喜欢涵涵的就点击图片吧 支持我的就点我吧







http://www.hongen.com/pub/date/date.png

TOP

漫步云端

我建议你发到这里来,在辛苦一下吧

TOP

ok
好的
再发次
版主不要说我重复发帖哦

喜欢涵涵的就点击图片吧 支持我的就点我吧







http://www.hongen.com/pub/date/date.png

TOP

不好意思,我刚看到,不在同一个版区,不会重复发帖的

TOP

JAR破解原理

       首先来了解下利用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.microedition.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");
                        isSend = true;
                }
                void doSendFalse()
                {
                        System.out.println("Send False");
                        isSend = false;
                }
}
通常,发送成功之后会有个判断或者是进行接着的方法,有的发送的方法本身就返回boolean变量,如果发送成功就返回true,反之就返回false。上面的例子属于一般情况,我们可以用以下几个思路来考虑。
1.发送成功后会运行doSendOk()方法,而发送失败就会运行doSendFalse(),那么我们只要把这两个方法的位置换一下,那么即使发送失败,那么程序仍然会运行doSendOk()方法。我们用jclasslib打开该class,然后查看sendSms()方法,看字节码:
0 aconst_null
1 astore_1
2 new #31 <java/lang/StringBuffer>
5 dup
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>
29 dup
30 astore_1
31 ldc #54 <text>
33 invokeinterface #58 <javax/wireless/messaging/MessageConnection.newMessage> count 2
38 checkcast #60 <javax/wireless/messaging/TextMessage>
41 dup
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>
78 return

我们需要利用的就是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改成其他东西。(具体过程略,大家自己想想吧)。

喜欢涵涵的就点击图片吧 支持我的就点我吧







http://www.hongen.com/pub/date/date.png

TOP

很有成就的感觉
哈哈

喜欢涵涵的就点击图片吧 支持我的就点我吧







http://www.hongen.com/pub/date/date.png

TOP

哈哈 下在试试

TOP

北京到澳门价格机票低价机票折扣机票

提示: 作者被禁止或删除 内容自动屏蔽
北京高山机票网专业销售国内国际机票010-65949168

TOP

支持下,看看好使不

TOP

感谢楼主分享

TOP

 26 123
发新话题
本功能由奇虎问答实现

相关主题

标题 作者 最后发表
新人必看!N78常见问题汇总! 猫瞳 2008-10-10
PC用~~HALO~~破解游戏短信收费 潇潇cici 2008-05-03
格机后出现的问题、证书、GPS、主题/游戏删除等 antonyboy 2008-09-03
点击阅读更多关于的相关帖子  更多相关主题