java反编译之 基础篇(class未加密未混淆)

常用的工具有两个:jd-jui,DJ java Decomplier ,

第一个工具最为常用,但有时候,译的也不准备,第二个工具不认带有中文的目录。两个一起用,可以减少语法错误。

 

class文件到java源文件,这是一个完全可逆的过程。

class文件托到jd-jui上,File->save all sources将会把所有class文件打包,存在指定路径。

1.       如果你要修改一两个类,则不必将所有class类都调出来,保证你要改的class类语法正确却可!修改完再生成class,替换原系统中的文件。如果出现引用问题,可以建立空的目录!

 注意:编译后的class文件的jdk的版本必须你原系统的统一!否则会出一些莫名其妙的错误!使用 UE 打开 class 文件,第一行内容:

00000000h: CA FE BA BE 00 00 00 32 00 A9 07 00 02 01 00 37 ;
漱壕...2.?....7

前四个字节为固定的 CA FE BA BE ,接下来的四个字节为次版本号(0000)和主版本号(00032)。

32
JDK1.6
31
JDK1.5
30
JDK1.4
2F
JDK1.3

 

2.       如果你需要将安装好的项目工程做导出原文件,做二次开发,要比上面费点力。但比你自己开发省力的多了.

新建一个web工程,jd-jui导出的java 类,全部放到src下。把tomcat工程里的jsp直接的放到新建工程的webroot下。这一步大家都知道。下面主要介绍一些逆向生成的常见错误:

cas-client-core-3.1.1.jar为例

导入后图为:


 

逆向工具并不是十全十美的,错误存在是很正常的。

1>     缺少jar.第一步把它所需要的jar包给他。如图:


 

2>     结构复杂的内部类会报错。需要手动调一下变量参数。如图:


 

修改后图:

 

 

3>     循环变量缺少声明,如图:


 

4>     true1,false0分不清楚。方法返回一个boolean,往往会return 1.返回类型不对!

 

5>     bytd[],这个类型为被译成乱码。。。遇过一次,查了很久才查到,这里标注一下!

 

一般的java项目这个文档足够把源码调出来了。但是遇到混淆的,加密的怎么办?

研究中,略有心得,后续中。。。

 

给大家看一下什么是变态混淆!

请看目录:


 

下面是从反编译工具jd-uid得到的代码:


 

没有语法问题,只是把类名,变量只用用0O1,I做了难以理解的名称,有专门的混淆工具!给反编译起到了一定的阻碍功能。

 

还有一个是class文件加密,反编译工具将无法打开!后续中。。。

posted @ 2012-04-11 13:09  有梦就能实现  阅读(2203)  评论(0编辑  收藏  举报