【教程】SMS(短信)破解的方法!
【无关的废话】才来论坛几天,发现这里真的是个好地方!!
恩,版主大大跟我说了下,发个教程上来吧!
【关于开始】
首先,我们得有那么个软件对吧 ···恩,这个软件问题还是大家自己解决比较好,用百度啊谷歌啊什么搜一搜。
版本得是2.06以前的。
【为什么是2.06以前的?】
因为这款软件以前的时候是专门为破解游戏而生的,附带了汉化等功能。
最开始的1.0可以已经绝版了..不过可以这么说,1.0版是最稳定最好用的,当然,1.0也有不少的缺陷....
【开始破解】
说了那么多废话,不说你们,我自己也觉得有点JJYY了...
下载了HALO以后,是不可以直接打开的哦~还需要一个JDK(最低版本1.5),
JDK是SUN公司的作品,网络上有很多很多,随便找找就是一大堆的。这里就不多嘴了。
下载了JDK以后安装,安装完成以后可能需要你重启电脑,不去管它,我们这个只是需要JDK而已
又不需要它运行。
打开 HALO.exe
如下图:
我这个是HALO1.0的,其他的版本不影响,步骤是一样的。
[attach]1364507[/attach]
按照顺序点击:“工具→配置”,你会看到下面这样的情形。
[attach]1364508[/attach]
其他的就没什么需要改动的了,本来就很不错。如果你是老手了,可以考虑改动改动。
这里只是针对破截进行传教,故此不说了。
然后应用、确定。
让我们来看看下一张图。
[attach]1364509[/attach]
这里是破解最关键的一步,一旦出错可就麻大烦了!
先点 1 编译 ,它会出现如下提示。
[attach]1364510[/attach]
等待一会儿,这个等待时间是看配置来的,配置高的电脑速度就快。
配置低的嘛....去弄杯咖啡什么的慢慢等吧..
接着就是 2 打包
按下第二个图标
如上一步一样,也会出现类似的提示。依旧需要慢慢的等待.....
全部完成以后,游戏的破解就完成一半了···
为什么是一半呢?
因为,大部分的人都是在这个地方出西西··游戏打包了以后就以为我那个游戏就可以了,其实是错误的。
要在HALO的目录下有一个"game"的文件夹,选择你刚破解的游戏名称相同的文件夹,打开以后才是
我们辛辛苦苦破解出来的游戏~
说到这里基本上就可以往上发啦 ···不过在发之前,最好是拿相应机型,或者模拟器进行一点点的测试,
以确保游戏是真正的破解。
【有的游戏有反盗版,有的时候破解了的也不可以用,还有的是WAP收费,
这个就不属于这个帖子破解的范围了】
【实战部分】
先从网上随便弄一个下来,进行范例测试。
我们选用的是 无人岛-孽欲狂魔
打开
[attach]1364511[/attach]
然后,编译、打包
再运行一下··[attach]1364512[/attach]
搞定!
这个游戏是在开始的时候收费,我之前已经玩过了,所以没有出现扣费点。
第一次玩的时候是会出现的·~~
[[i] 本帖最后由 wangyizell323 于 2008-8-5 22:46 编辑 [/i]]
天地游系列游戏的简单破解
天地游公司有的时候会出那么个反盗版的东西来。对我们的破解造成了巨大的阻挠。这里如果你看不懂上面的那个教程的话,或者不好用。
可以参照这个。
要求:
1.有WINRAR解压缩程序
2.一点点电脑的操作技术(电脑白痴就不要找我抬杠了)
3.我是移动用户。
以 仙剑传奇-神雕侠女 举例
用WINRAR打开JAR包,出现如下情况
[attach]1364536[/attach]
找到chid.txt,并打开它!
出现了一个笔记本对么?里面的内容是113吧!把它改成0000或00000
移动用户都知道发0000是什么意思吧!这个短信无论如何都是免费的!
正好成了我们可以利用的漏洞。
然后保存!
RAR会问你,是不是在压缩包里更新。点 是 就好了
然后再安装。
遇到需要发短信的地方就点是好了,虽然会出0.1元的短信费,但是在没有破解版的情况下,就这样啦 ··
『破解』取消短信收费简易教程
方法很…说难就难,说简单就超简单。正文部分:
首先来了解一下利用java实现收费的原理,这个使用的是j2me的可选包WirelessagingAPI(WMA,JSR120)来进行有操作的。这是一个敏感API,在未取得授权或认证之前使用时会提示使用者是否要进行操作(就是在进行第一次短信支付时所问的“是否允许发送短信”,提示仅一次,若同意则以后跳过,直接询问是否发送至sms://******;若不同意则永远禁发送,支付功能失效,除非重新安装。)
由于设置了短信的游戏中目的只是为了收费,而且一般一条短信的价格都不菲,但是很多地方不发短信又无法继续进行游戏,那么,如果想继续免费玩下去,就得对短信操作进行处理。(一般来说发短信和连网不一样,不是必须发才可以实现结果的,同样是进下一关,网络下载就是必须进行的操作,而短信买关就不一样,那关其实是存在的,但是必须进行这一操作才可继续玩)
首先是工具,必备的工具就是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
5 dup
6 ldc #33
8 invokespecial #36 java/lang/StringBuffer.
11 aload_0
12 getfield #18
15 invokevirtual #40
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 aload_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打开,定位(怎么定位请看我的另一篇文章,快速定位需要修改的16进制位置),
67行为:B6004B
75行为:B6004E
我们把004B和004E两个位置换下,保存,然后反编译看看,是不是OK了,接下来我们要做的是为了确保不发出短信出去(当然在有提示的时候按否也是一样的,但是为防止按错还是保险起见)把sms://这个改成其他字符吧,比如kim:// :),这样一运行到发短信的地方就发生异常,程序就运行catch中的doSendOk()了。
另外一种思路要你对流程很了解,不直接修改发送的代码,而是看doSendOk()和doSendFalse()这两个方法,既然发不出去会运行doSendFalse(),而doSendFalse()和doSendOk()二者只是一个变量的区别,那么我们把doSendFalse()中的 isSend = false改成 isSend = true,不就是和doSendOk()只是方法名之间的区别了吗,同样道理,改完后再把sms改成其他东西。(具体过程略,大家自己想想吧)。
介绍俩个软件:1 UltraEdit(16进制编辑器,汉化必备基本工具)下载地址:
[attach]1364563[/attach]
[attach]1364568[/attach]
[attach]1364569[/attach]
[attach]1364570[/attach]
[attach]1364571[/attach]
[attach]1364576[/attach]
2 小颖JAVA源代码反编译超级引擎(强有力的汉化助手)下载地址:
[attach]1364577[/attach]
[[i] 本帖最后由 a363389589 于 2008-8-4 21:53 编辑 [/i]]
[教程]快速定位需要修改的class文件中的16进制位置
首先讲下软件,需要下载一个名为:jclasslib的软件,并且需要安装JDK,下载下来的jclasslib一般是个压缩包,解压后目录下会有个名为bin的文件夹,里面的jclasslib.exe就是可执行文件。打开该文件,界面很清楚,选择打开我们需要修改的class文件。比如我们需要修改的文件有这样一段代码:
public boolean a(String s1, String s2)
{
MessageConnection messageconnection = null;
boolean flag = true;
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 = true;
}
if(messageconnection != null)
{
try
{
messageconnection.close();
}
catch(Exception exception)
{
return true;
}
return flag;
} else
{
return true;
}
}
如果我们想把所有的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>
8 dup
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>
64 dup
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 = null;
boolean flag = false;
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 = false;
}
if(messageconnection != null)
{
try
{
messageconnection.close();
}
catch(Exception exception)
{
return false;
}
return flag;
} else
{
return false;
}
}
已经完成了修改了! 学习下,楼主辛苦了 感谢楼主分享,期待你更多更好的作品。 兩個字,強悍:yc (3)yc 楼主很强啊!!强烈支持!! 太辛苦LZ了~~~~
支持~~~~
【HALO2.0 另一种破解的方法】
不知道大家有没有注意到HALO 2.07以后的版本以为拉阔的那封警告信,SMS破解功能被取消了。
MS方面也不再专项破解手机游戏。
而HALO2.0拥有class edit的功能。
这里就根据最新版的HALO写一个破解游戏的教程。以下是我的一点使用经验。
首先去下一个HALO 2来 版本是什么无所谓。现在是2.12??
打开HALO
[attach]1372535[/attach]
这里我以 封神榜-紫虚天玄录 为例。
[attach]1372536[/attach]
打开 [b][color=red]编辑→全文查找[/color][/b]
[b][color=#ff0000][/color][/b]
[color=black]记住,一定要在打开了CLASS编辑模式的时候才可以这样。不然下面的教程无法继续。[/color]
打开后如下图
[attach]1372537[/attach]
在以前的教程里写得相当复杂,还要查找这个class是谁调用的,然后调用方式等等,
让人觉得眼花。我在这里做一点点精简工作。
在By total classes模式下输入 setaddress或message
现在比较流行message和setaddress
以前大部分是http,不过现在HTTP代表的却是WAP收费。。
点find
会出现以下情况:
[attach]1372538[/attach]
双击打开,选择[b][color=red]代码编辑表[/color][/b]。
[attach]1372539[/attach]
将除了倒数两行的代码外的全部代码都删除。
在按下删除的时候,HALO可能会问你
[attach]1372540[/attach]
点“是”就好啦 ·~~
删除以后还有两行怎么办呢?
双击倒数第二行的iconst_0
[attach]1372541[/attach]
选择 boolean 即 布尔值 改为 true
然后点 [b][color=red]保存方法[/color][/b] 就可以啦!
不要着急哦~万一你这个时候就把HALO关掉了,那你就亏大了。
因为你的游戏还没有生成。
点击 [b][color=red]编译 打包[/color][/b]
在/game/****(你的游戏名称)寻找你的游戏文件。
这个时候破解就算是完成了~
[[i] 本帖最后由 a363389589 于 2008-8-14 04:32 编辑 [/i]] 没人看 ?:yc (4)yc 支持啦,哈哈,辛苦 哇,好厉害000 还有一些跟破解无关的教程。
我自己用有的时候还出问题。
就不在这里误导各位了。
待把它们各个击破,再发上来。 太暴力了 额佩服丫··· 破解完了.
但是拿模拟机运行显示文件是错误的 [quote]原帖由 [i]Amnesiac[/i] 于 2008-8-15 21:56 发表 [url=http://www.nokiabbs.com/redirect.php?goto=findpost&pid=9056601&ptid=489753][img]http://www.nokiabbs.com/images/common/back.gif[/img][/url]
破解完了.
但是拿模拟机运行显示文件是错误的 [/quote]
用的哪种方法破解的?破解的什么游戏? 这个方法很新鲜啊.
我之前看的不是这样 [quote]原帖由 [i]wangyizell323[/i] 于 2008-8-15 22:48 发表 [url=http://www.nokiabbs.com/redirect.php?goto=findpost&pid=9056980&ptid=489753][img]http://www.nokiabbs.com/images/common/back.gif[/img][/url]
用的哪种方法破解的?破解的什么游戏? [/quote]
就是那个 新绝代双骄
很失败啊. 新绝代双娇?是不是那种收费代码分N节的那种?那种的这里的教程貌似不可破解。
不过现在市面上90%的游戏都可以破解。你说的那游戏我过几天去看看,可能会出破解的。