「java程序脱壳」java程序退出代码

博主:adminadmin 2023-03-17 15:35:07 384

本篇文章给大家谈谈java程序脱壳,以及java程序退出代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用JAVA编写一个可执行程序的加壳和脱壳程序。 如果被采纳,加分多多。或者直接联系我。

JAVAJDK本身就有几个类是用来加密的,调用就可以了。

看一下这个教程吧

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 cryptosys.modules['Crypto']=cryptofrom  crypto.Cipher import AES def decdata(c):    key=binascii.a2b_hex('2CAE9F73999AF1E51AA4547C6B57BB22')    iv=16*'\x00'    cryptor=AES.new(key,AES.MODE_ECB,iv)    data=cryptor.decrypt(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 os.walk(indir):        for filename in files:            if filename.endswith(exstr):                infilename = path + os.sep + filename                size = os.path.getsize(infilename)                 with open(infilename, 'rb') as inFile:                    data = inFile.read()                    inFile.close()                try:                    result=decdata(data)                except:                    print filename                    break                outfilename = outdir + infilename.replace(indir, '', 1).replace('classx','class')                print outfilename                                 outPath,outFilename = os.path.split(outfilename)                if not os.path.exists(outPath):                    os.makedirs(outPath)                  '''                解密class                '''                with open(outfilename, 'wb') as outFile:                    outFile.write(result)                    outFile.close()

0x04 结果

可以看到class文件已经被解密出来了,并且能正确反编译。

替换解密出来的文件后,通过修改jar的入口即可脱壳完成。

改成

[XML] 纯文本查看 复制代码

Manifest-Version: 1.0Ant-Version: Apache Ant 1.9.4Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.)Main-Class: com.fx24k.fxtrader.trader.FxClient

脱壳能获得源代码吗?

加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段.

加壳过的程序可以直接运行,但是不能查看源代码.要经过脱壳才可以查看源代码.

加“壳”其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。加“壳”虽然增加了CPU附带但是减少了硬盘读写时间,实际应用时加“壳”以后程序运行速度更快(当然有的加“壳”以后会变慢,那是选择的加“壳”工具问题)。

一般软件都加“壳”这样不但可以保护自己的软件不被破解、修改还可以增加运行时启动速度。

加“壳”不等于木马,我们平时的巨大多数软件都加了自己的专用“壳”。

RAR和ZIP都是压缩软件不是加“壳”工具,他们解压时是需要进行磁盘读写,“壳”的解压缩是直接在内存中进行的,用RAR或者ZIP压缩一个病毒你试试解压缩时杀毒软件肯定会发现,而用加“壳”手段封装老木马,能发现的杀毒软件就剩不下几个。

因为加壳了之后等于把这个文件进行了保护(就是有些杀毒软件杀不了的原因)

因为文件不能重复加壳.判断依据是文件是否已经加了保护

加壳其实主要就有两个作用:

防止反编译(破解软件)和免杀

修改文件不一定要脱壳,看你的水平

些软件加壳工具

1、软件防盗版战士

《软件防盗版战士》是一个以数字许可的形式为MicrosoftWindows下(PE格式)应用程序提供版权保护以及数字化销售支持的纯软件产品。它含有认证版、序列号版这两个可选版本。认证版以128位二进制证书文件作为被保护软件的最终用户使用许可,并且主要以最终用户的硬盘、CPU、网卡及操作系统等特征信息为版权保护的安全源(保守地说,理论上认证版的版权保护强度达到3-5年内不可破解)。

安全指标:1、对象安全强度——《软件防盗版战士》的各种对象安全都尽可能地加入了加密算法中,其强度相当于对称算法的128位加密,比普通硬件狗的8位、16位、32位和64位(很少有64位的)安全强度强许多。2、入口安全强度——《软件防盗版战士》采用功能相关法解决入口安全问题。入口安全的最小复杂度大于40位的安全强度。《软件防盗版战士》的入口安全强度最大限定为128位(含128位)。

2、比泰软件防盗版战士2005J

比泰软件防盗版战士2005J(BS-APC),是比泰科技出品的一个软件加密保护产品系列(含L版、A版、J版等产品线),它们为商业软件提供可靠的防盗版保护并支持数字化发行。|它采用比泰公司世界领先的“执行代码抽取加密”技术,软硬件结合,以“认证技术”保证软件“对象安全”、以“功能相关法”保证软件“入口安全”、以具有唯一性的计算机(物理)特征数据作为身份认证指纹,并以软件用户计算机本身的运算能力进行防盗版保护。具有64位以上,到128位的加密安全强度。安全强度远胜传统的外壳加密式加密狗、API内嵌式加密狗,软件保护的功能范围及运行效率超过智能狗,且无须学习加密狗编程,不引入附加硬件维护问题。|适合对C/MFC/VisualC++(VC++)/BorlandC++Builder(BCB)、Delphi/ObjectPascal、PowerBuilder(PB)、Authorware、Director等开发工具所编译程序的保护。|因为它是对真实指令进行代码抽取加密,因此暂不保护伪编译程序,如VB、VFP、C#、JAVA。

3、AntiCrackProtector

ACProtect是由国人研究开发并拥有自主知识产权的加密软件精品,它有许多技术已经达到并超过了国外同类产品,是一个为Windows下的EXE/DLL/OCX/SCR等32位可运行文件加密系统。它通过为程序加上一层坚硬的保护壳,可以非常有效的防止盗版。还可以为程序设置限制注册功能。

即使你没有程序的原代码,你也可以用ACProtect在程序上加上运行次数限制,运行天数限制,运行有效日期限制。通过公匙加密算法(RSA)创建并校验注册KEY,只有在RSAKEY正确的情况下,才对那些受保护的代码进行正常解码。同时使用了内嵌式加密,可以有效的防止加密软件从内存中被抓取,也就是无法被脱壳。

内置反调试引擎,有效的增加了破解的难度。

专用的API系统,可以使ACProtect和你的软件紧密的接合在一起,这样,你就可以通过使用ACProtect来创建你的全功能评估版。

4、XQBOX软件保护安装系统

XQBoxSoftwareProtecting是一个以数字许可的形式为应用程序提供版权保护以及数字化销售支持的纯软件产品。它采用机器具有唯一性的数据做指纹,利用宿主计算机的运算能力进行防盗版保护。

XQBox保护系统是集软件保护和安装工具于一身的集成工具。XQBox核心代码是遵守标准c的规则来编写,它可以在,windows3.x/9x/2000/nt,unix,linux等各种操作系统下编译运行。作为中间件,它可在c、c++、java、delphi、vc、vb、vf、Masm32、pb、php、Authorware等。各种工具开发的软件中嵌入使用,它的兼容性非常好。核心代码经全域均匀抽值测试,各种特值测试和可行的全域测试均通过。

5、秦赢甲胄反盗版加密软件

这款反盗版软件的用户注册方便,终端用户不需要手动输入序列号认证码等等,一切由注册端软件自动完成;用户机器的硬件信息作为注册码/加密密钥;一个拷贝只能在同一台机器上注册;只要是同一台机器,可以在这台机器上注册多次;只能在注册的那台机器上运行

使用理论上安全的密码学协议和算法,保证不可脱机破解。不能通过注册机破解;不能通过散发序列号破解。

更改检测(可以检测病毒和破解者更改);反跟踪功能(Anti-Debug)。

运行时代码完整性校验,可防止Cracker跟踪时设置断点;可防止通过补丁程序破解。

反Dump功能(Anti-Dump);反反汇编功能(Anit-Disassembler);可以有效的管理经销商和序列号的发放;可以统计软件的销售数量;可以有效的管理用户注册。

6、PE加密保护软件EncryptPE

EncryptPE能加密保护常规PE文件(EXE、DLL、OCX等一般程序或NT服务程序),防静态分析修改,反动态跟踪调试,有效地保护软件,防止盗版。除常规的对抗调试器(SoftIce、TRW、OllyDbg等)、监视器、DUMP工具方法外,EncryptPE采用的加密保护的手段还有:随机加密算法、CRC校验、变形、代码替换、进程注入、APIHOOK、多线程、调试运行、全程监控等。

能将普通软件变成共享软件,增加定时注册提醒、限制试用日期、限制试用次数、限制试用天数、限制每次试用多长时间等功能。

能根据最终用户的机器信息、注册用户及加密时的保护密码计算注册码,从诸多加密算法中随机选择一种用于注册码的计算。

支持多语言,并为待加密软件提供多语言接口。

向待加密软件提供丰富的方便的编程接口,便于设计个性注册方式,同时使被加密程序与加密壳之间融为一个整体,增加破解难度。

可以运行于多种Windows平台,包括9X/ME/NT/2000/XP/2003。

7、注册码生成器

本软件可以自动随机生成2至32位注册序列号及对应的注册码,并将这些注册信息包含到一个动态联接库DLL文件中,这样软件开发者可以将这个DLL文件同应用程序一并发行,并在应用程序的相关模块中调用这个DLL文件中提供的函数获得注册号及相对应的注册码,注册号及相对应的注册码对软件使用者来说是不透明的,它可以用效的避免软件的盗版及其重复注册,切实保护软件开发者的版权。随软件一同提供免费的DLL源程序生成器工具,DLL注册码查询工具,启动应用程序时的注册对话框示例程序及全部C++源代码等。

8、计算机软件防盗版

计算机软件防盗版系统具有国际领先水平的保护知识产权的新技术。现该技术已顺利完成了全部研制。利用嵌入式加密,动态激活解密,工具化设计特征,检测体系,产品形态技术。于1999年7月通过公安部计算机信息安全检测中心的检测。计算机软件防盗版磁盘、光盘获公安部颁发的计算机信息安全产品销售许可证。

软件脱壳后的dex文件要做什么

软件脱壳后的dex文件要简单说就是优化后的android版.exe。每个apk安装包里都有。相对于PC上的java虚拟机能运行.class;android上的Davlik虚拟机能运行.dex。

用bw2k确定程序的真正入口点OEP,不妨记为xxxx;若找不到,请试一试Softice + icedump: 使用Icedump 的/tracex 命令可能找到OEP 的地址;若还找不到,只能手动跟踪,看你的功力和运气了。

矛与盾:

可执行文件加密(加壳)是诸多软件保护方法中的一种。在上个世纪90年代后期(大约是1995-1999年其间)加壳方式的软件保护与破解的优势经历了交替上升、彼消此长的过程。

保护一方和破解一方基本上都需要阅读DOS中断21和中断10的相关部分,深入的了解了计算机软件的运行机制。软件保护经历了简单的加壳、内外结合、迷宫技术等过程。破解方使用SoftIce等工具进行跟踪,从单机单步跟踪分析到双机比较运行等方式进行破解的过程。

关于java程序脱壳和java程序退出代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。