
有时喜欢玩游戏的友友们难免会遇到一些要收费的JAR游戏而往往敬而远之!现在教友友们怎么破解这些收费游戏,之前我也是在网上学了一些,在这里就跟大家分享下吧!有什么不对的还请多多指教!好了返回正题,准备好就开始吧!
首先说一个最简单的破解收费游戏的方法给大家,此教程对基本上简单的短信陷阱都可破解!
需要工具:HALO、MiniSoYo模拟器、电脑、手机
应用系统:电脑(如WindowsXP等)
首先进入HALO打开一个需要破解的JAR游戏!打开后点击工具-配置,把对JAR进行破解勾上,如果不想修改游戏的就把JAVAMAGIC的修改屏幕和键位关掉即可,设置完之后…打开工程菜单按编译编译完成后游戏就已经成功叉叉了,再按工程菜单按打包,(特别要注意必须要先编译完成后才可以打包喔,要不会出错的喔,注意先后顺序。)打包完成后叉叉软件就会在HALO文件夹中保存了(保存在GAMES文件夹中,该文件夹是在成功打包完以后才会自动生成的,一开始是没有的)最后用MiniSoYo模拟器来测试…这样破解工作就完成了。
注:此破解方法不能绝对破解所有收费游戏!只是针对发短信收费之类的JAR游戏。此HALO、MiniSoYo模拟器两软件我就不上传了(友友们上百度可以搜索到,输入软件名称搜索就可以了)最后祝大家破解成功!
感谢支持minisoyo!
看这个网游安全性达到什么水平,如果设计得很好,一般没办法破解,比方说,我可以自己实现类加载器,我所有class文件全是加密的,类加载器在加载class之前,先根据我设计好的解密算法,把class文件的内容还原成明文,这样的话,是没办法反编译的。还有我可以对每个文件,像class文件,,数据文件,都进行md5校验,你就没办法篡改了。这个网游要是很火,网上会有很多破解方法的,如果网上找不到,那么,只能自己破解,或者花钱请人破解了,毕竟是个细活,编程高手,不花个两三天,估计也破不开的。
可以
首先通过脚本将java代码定义对象全部改为ABCD等一些没有意义的单个字母,再加入一些无作用的java代码,然后将整个代码和成一行,让你从代码结构上无法入手。最后就是编译
编译的话,虽然有反编译工具,但是这种经过处理的代码会出现代码丢失等现象
然后你要从这样的代码了开始找你要的东西,祝你成功!虽然这不太可能(有些搞了加密算法的就别浪费时间了)
用OD载入该软件,搜索下字符串,可以很快知道这个软件是java写的,并且用exe4j打包的。
exe4j打包的jar会解包到临时文件下,我们到临时文件看一看,可以看到,jar被释放出来了。目测可以直接反编译。
但是事情并不是尽如人意,class文件被加密了。通过简单的Google一下,classguard用了AES加密,前人采用的破解方法是直接DUMP下来。
0x01 静态分析
简单浏览下这个类的实现,发现和传统的壳没啥不同,都是自己实现了classloader,但是解密算法在dll中。
通过浏览lib文件夹,可以看到不同平台下的库文件,这里主要分析windows下的动态链接库。
IDA载入该dll,查看其导出函数定位到解密class的地方。
这个dll静态链接了OpenSSL的静态库。通过ida对应的FLIRT文件来快速识别OpenSSL的库函数。
可以看到,解密的主要算法是通过构造一个RSA私钥,用该私钥解密内置AES算法的秘钥,最后通过解密出来的key来解密class。
所以为了获得解密后的class,可以跑OD脚本直接dump下来,也可以直接批量解密,这里我采用的是批量解密的方法,首先得动态获取解密后的AES秘钥。
0x02 动态分析
通过勾选OD的“中断于新模块"可以在载入该dll的时候断下来,转到对应的地方下断点,可以获取AES的秘钥。即下图框起来的那一部分。
可以看到class在经过该EVP_DecryptUpdate函数的时候内容已经被解开了(部分解开,写OD脚本的时候可以考虑在EVP_DecryptUpdate和EVP_DecryptFinal下断点获取相关内容及长度)
0x03 编写解密脚本
知道了AES的秘钥可以编写脚本来批量解密,脚本如下:
[Python] 纯文本查看 复制代码
#coding=UTF-8import ioimport osimport base64import binasciiimport sysimport cryptosysmodules['Crypto']=cryptofrom cryptoCipher import AES def decdata(c): key=binasciia2b_hex('2CAE9F73999AF1E51AA4547C6B57BB22') iv=16'\x00' cryptor=AESnew(key,AESMODE_ECB,iv) data=cryptordecrypt(c) pad=ord(data[-1]) plain_text=data[0:len(data)-pad] return plain_text if __name__ == '__main__': indir = r'trader' #输入文件夹 outdir= r'output'#输出文件夹 exstr='classx' #输入文件的扩展名 for path, subdirs, files in oswalk(indir): for filename in files: if filenameendswith(exstr): infilename = path + ossep + filename size = ospathgetsize(infilename) with open(infilename, 'rb') as inFile: data = inFileread() inFileclose() try: result=decdata(data) except: print filename break outfilename = outdir + infilenamereplace(indir, '', 1)replace('classx','class') print outfilename outPath,outFilename = ospathsplit(outfilename) if not ospathexists(outPath): osmakedirs(outPath) ''' 解密class ''' with open(outfilename, 'wb') as outFile: outFilewrite(result) outFileclose()0x04 结果
可以看到class文件已经被解密出来了,并且能正确反编译。
替换解密出来的文件后,通过修改jar的入口即可脱壳完成。
改成
[XML] 纯文本查看 复制代码
Manifest-Version: 10Ant-Version: Apache Ant 194Created-By: 160_45-b06 (Sun Microsystems Inc)Main-Class: comfx24kfxtradertraderFxClientJDK必装,先把java基础打好,理论上用记事本+JDk就能编写程序。熟练以后可以选择一种集成开发环境,比如Eclipse来进行Java程序的编写。抱一本Java书好好看看,不太好学,坚持下来就好了。
以上就是关于Java游戏破解全部的内容,包括:Java游戏破解、怎样将JAVA网游破解、Java反编译,破解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)