从exe4j生成的exe中抽取jar文件
2019独角兽企业重金招聘Python工程师标准>>>
从exe4j生成的exe中抽取jar文件 博客分类: java
现在网络上越来越流行.net和java写的客户端的小应用程序,而且后缀是exe。本文讨论的是如何从exe4j封装的exe文件中将自己想要的jar抽取出来。
exe4j一直是一种比较通用的java exe封装工具,但是其并没有将jar转换为本地文件,而是将jar文件通过特殊处理后,封装成的一个exe文件。因此只要我们了解了exe4j的原理, 就可以将jar文件从exe文件中提取出来,并通过反编译工具来查看程序代码。
1. 分析Exe4J,得知其在添加文件到.exe时,使用0x88将文件内容Xor,所以第一步,我们需要将原始的数据提取出来:
import java.util. * ;
public class gen {
public static void main(String args[]) throws IOException {
FileInputStream fin = new FileInputStream(args[ 0 ]); // 可以将整个exe文件解码
FileOutputStream fout = new FileOutputStream(args[ 1 ]);
BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(fout);
int in = 0 ;
do {
in = bin.read();
if (in == - 1 )
break ;
in ^= 0x88 ;
bout.write(in);
} while ( true );
bin.close();
fin.close();
bout.close();
fout.close();
}
}
2.分析提取出来的数据文件,使用WinHex查看其16进制代码。由于Jar文件的开头总是PK开头,并且总包含有manifest.mf文件,并且结尾总是有3个00,同时结尾段有整个Jar包文件的索引,我们可以根据这一特性来分析我们需要的片段。
1、搜索Jar的manifest,然后往前找,找到的第一个PK段,即为一个Jar的开头。
2、查看片段里Jar里的每个class信息,直到最后的文件索引片段。
3、一个Jar的结束片段位于索引片段之后,仍然包含着PK段,并且最后包含着3个00,且这3个00距离PK大概20个字节左右
根据以上3条准则,足以提取整个Jar数据段,然后导入新文件中,并且以zip字段命名,尝试用ZIP解压缩软件打开,看看是否抽取正确。
需要注意的是WinHex非注册版,只能保存280K大小的文件,更大的Jar文件,需要注册版的WinHex才行。
转载于:https://my.oschina.net/xiaominmin/blog/1597872
从exe4j生成的exe中抽取jar文件相关推荐
- exe4j生成的exe文件反编译
现在网络上越来越流行.net和java写的客户端的小应用程序,而且后缀是exe.本文讨论的是如何从exe4j封装的exe文件中将自己想要的jar抽取出来. exe4j一直是一种比较通用的java ex ...
- 使用jar命令替换jar包中的jar文件
替换jar包中的jar文件(一般jar不会压缩使用-0表示不压缩) 1. 根据文件名,查询出文件目录 jar -tvf xxxx.jar | grep jdbc.jar 2. 将需要修改的文件,解压出 ...
- 怎样在nexus 中 搜索到远程maven仓库中的jar 文件
怎样在nexus 中 搜索到远程maven仓库中的jar 文件 url: http://www.oschina.net/question/95712_21999 点击Administration菜单下 ...
- Pyinstaller打包: 将资源文件或文件夹打包到最后生成的exe中
前提:用pyinstaller打包时部分资源文件可以利用qrc转成py文件来读取,但是有部分文件类型不适用. 原理:Pyinstaller 将资源文件一起打包到exe中.当exe运行时,会生成一个临时 ...
- EXE4J生成的exe文件自动请求管理员权限(UAC)
Visual Studio UAC设置[/caption] 这时候就要用到Resource Hacker这个工具来对打包好的EXE文件进行修改 下载地址: 链接: http://pan.baidu.c ...
- java中的jar文件
官方英文介绍******************************************************************************************* In ...
- 如何在Windows10系统中修改.jar文件的默认应用
普通方式(无效) 通常,我们在Windows10系统中修改文件的默认应用有两种方式: 打开系统设置->应用->默认应用->按文件类型指定默认应用,找到相应的文件类型后进行修改: 选中 ...
- 使用AMDU工具从无法MOUNT的DISKGROUP中抽取数据文件
AMDU是ORACLE针对ASM开发的源数据转储工具,其全称为ASM Metadata Dump Utility(AMDU) AMDU具体以下三个主要功能: 1. 将ASM DISK上的元数据转储到文 ...
- 向Maven的本地库中添加jar文件
有时我们要用的 maven 依赖项在官方repo库中找不到,然而我们从其他渠道获得了依赖项中的所有jar文件,本文记录了如何向本地库添加jar文件. 从复杂到简单,有三种方法: 使用 maven 的仓 ...
最新文章
- vue 手写一个时间选择器
- centos下 keepalived1.2.8配置文件
- 使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...
- 保留凸性的方式:一个凸函数在一个随机变量上的期望仍然是凸函数
- 解决sql脚本文件太大无法打开的问题
- 基础总结篇之八:创建及调用自己的ContentProvider
- Ruby之父讲什么是闭包
- 匿存函数,内存函数,递归函数,二分法查找
- CrossOver for Mac 怎么用?
- WordPress简单好看的线报主题baolog
- 工商银行java script error windows7_Win8.1装工行网银提示"called runscript when not marked in progress"的解决方法...
- php是世界上最好的语言吗
- Linux下线程经典问题(生产者消费者问题,哲学家问题...)
- 下载bilibili视频
- 华为云ManageOne北向对接之基本名词概念(一)
- 如何做好公众号编辑—壹间网络
- Bootstrap 的基本使用方法
- 关于远心镜头的基础知识
- 『注册中心』Consul微服务注册中心的使用及相关集群搭建
- 游戏输入控制的五条黄金法则
热门文章
- 使用第三方插件,对office,PDF 进行预览
- composer的简单使用
- ansible+heartbeatV2构建高可用群集
- sql语句练习(一)
- PHP 入门 - 9.安全
- 将 gitblog 的博客内容搬迁到 CSDN
- 记录一个AndroidX和Android support库不能共存的坑
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- 浅谈c/c++typedef和#define区别[转]
- sqlserver数据库大型应用解决方案总结 数据库负载均衡