当前位置:首页 » 编程软件 » 反编译compiledcode

反编译compiledcode

发布时间: 2022-10-24 18:30:34

A. { /* compiled code */ },一些源码的方法内部会有这样的注释。是什么意思。。

就是开发人员加的注释,方便自己或者他人维护和理解代码,编译器编译的时候会自动忽略。
/* */中间可以是中文或其它语言,不同语言会有不同的注释语法。

B. EXE文件反编译成源码

EXE文件可以通过步骤来反编译成源码,具体步骤如下:

1、在网络上搜索下载反编译工具ILSpy,ILspy是一个开源的.net反编译软件,使用十分方便。解压后如图,双击.exe文件打开解压工具。

(2)反编译compiledcode扩展阅读:

反编译也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。

exe是编译好的程序文件 要看结构就得反编译 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 所以要要看结构不止要会反编译 还得精通汇编语言。

C. 如何进行反编程

我们按照三种不同的分类,从多个角度阐述反编译的基本过程。

如果按照反编译技术实施的顺序划分,则可以分为7个阶段,它们是:句法分析、语义分析、中间代码生成、控制流图生成、控制流分析、代码生成。

如果按照实践中的具体操作划分,一般也可以分为7个不同的步骤,分别是:文件装载,指令解码,语义映射,相关图构造,过程分析,类型分析和结果输出等。

以逆向分析为目的,反编译的各个阶段并不是一个严格的一遍顺序,而是存在着一些并行的模块,并且也需要通过循环执行分析过程来针对某些特殊问题(例如非N分支代码产生的间接跳转指令)进行分析和恢复。

反编译的处理过程,如果按功能区分,可以分为:前端、中端和后端三个部分。其实这种划分方式是将上述两种过程的阶段进行合并,也就是将几个反编译器阶段组合在一起。这样划分的好处是:通过设计不同的前端、中端和后端以实现针对多种源和目标的反编译器。

D. 我想问下C#生成compiled文件如何反编译出来

C#反编译工具Reflector
这个工具也许可以帮到你

E. Android反编译(三)— 手动编译

PS: 最近没工作,没工作就没需求,没需求就没什么技术总结的灵感,那就没更新什么。但是两个月不更新了,要是三个月不更新就会出大事,所以这次打算做一件有意思又不难的事。
之前有发文章写过反编译,今天就来试试反编译之正编译,开玩笑的,就是试试手动编译的过程, 平时我们在项目中编译出包都是使用Gradle直接执行assemble任务就能解决,我打算试试手动模拟整个过程。当然我也是第一次这样搞,所以如果有写得不对的地方,还望指出。

众所周知,apk实质上就是一个压缩包。复习一下,我们写个最简单的Demo,然后打包,然解压,注意是解压,不是反编译,意义是不同的。

注意我这个Demo很简单,什么都不引入

然后我们看看整个出包的过程,随便从网上拿张图

然后这里我们用Android SDK给我们提供的工具来完成整个流程,工具在sdk文件夹下的build-tools文件夹下,有什么aapt.exe、dx.bat,用的就是这些

这步应该是整个流程最简单的吧,我感觉,所以从最简单的开始。
我们先看看生成的dex有什么

对比项目,我是一开始最基本的项目,什么都没动,所以只有一个MainActivity.clas,所以这里肯定是要先想办法得到BuildConfig.class和R.class。

输入命令:
aapt p -f -m -J <输出路径> -S <res路径> -I <android.jar路径> -M <Manifest路径>

下一步,我们需要BuildConfig.class
这个BuildConfig.java是由gradle在我们配置好gradle之后自己帮我们生成的,所以我们直接拿来用,然后再javac就得到class文件了

然后我们再编译我们的MainActivity.java并将它们放到同一个文件夹下, MainActivity因为引用了Android.jar和R文件,所以编译时注意点,我为此被动好好的复习了一遍javac,都是泪

最后一步,我们用dx工具就能打出dex文件了

然后执行命令就得到一个Dex文件,看看这个文件里面和上面直接打出的apk中的Dex文件有什么不同:

看图,我们上一步已经生成.dex了,那么我们需要和compiled Resource 还有 Other Resource 一起生成APK。

我们先来生成compiled Resource,也就是resources.arsc
发现之前使用aapt生成R文件的时候没写完整,当时可以加一个-F参数直接生成arsc和Manifest

导出的abc.zip里面就有resources.arsc和AndroidManifest.xml。
因为之前写漏了,所以肯定要重新编一次MainActivity.java和Dex

我们把刚才的dex文件和aapt生成的resources.arsc、AndroidManifest.xml和res放到一个文件夹里面。
PS:res文件夹也是上面aapt的命令生成的
然后我们对比这个文件夹和之前apk解压的文件夹

最后运行

看来是成功了。

再说说遇到的还有两个问题,并说下我解决问题的思路
(1)我把它们都放到一个文件夹之后,我压缩成压缩包,然后改后缀成.apk,然后发现安装不了,我就直接反编译,发现发编译失败,提示包有问题,以我多点玩包的经验,我感觉就是压缩工具出了问题,然后我去下个“好压”(这不是广告啊),然后就能正常反编译了。
(2)但是还是安装不了,再根据我多年的玩包经验,我感觉是签名问题,然后我随便给这个包上一个签名,就能正常安装得到上图的结果了。

总体来说,还真挺好玩的,这整个过程,就是翻车了几次。做完之后感觉非常牛逼,为什么这样说,因为我知道这整个过程,我就可以做到,我不经过gradle来打包,我自己写个python脚本来调用aapt和dx来打包也是能做到的。
当然上面纯属异想天开,因为这是个什么都没有的Demo所以觉得简单,要是一个真实的项目,我感觉肯定要有很多坑,别的先不说,一个项目那么多依赖关系,我这javac要搞死人。
最后如果有不对的地方,希望有大佬能够指出,毕竟能运行也不能证明完全没问题。然后我使用的build-tools是28的,不敢保证其它版本包括以后版本的玩法都一样。

F. 求教JDK中的反编译命令

用习惯了着名的反编译工具jad的话,如果有的时候单给出class文件,要快速看这个class文件

的JDK版本号等,其实不用工具,也可以用JDK自带的javap命令进行反编译输出,下面小结

其用法:


1,javap -verbose 类名

得到的信息如下:


Compiled from "Test.java"

public class Test extends java.lang.Object

SourceFile: "Test.java"

minor version: 0

major version: 50

Constant pool:

......


可以看出jdk的版本,这个用在判断某些CLASS的版本是否兼容的时候很有用.


2 最常见的不带参数的情况:javap 类名


比如某个类:

Java代码

packagetest;

publicclassTest{

intnumber=5;

publicvoidsayHello(){
System.out.println("Hello");
}
}


则:

C: empjavaptest>javap Test

Compiled from "Test.java"

public class test.Test extends java.lang.Object{

int number;

public test.Test();

public void sayHello();

}


带参数-c:

则可以看到字节码了:


Java代码

C:	empjavaptest>javap-cTest
Compiledfrom"Test.java"
publicclasstest.Testextendsjava.lang.Object{
intnumber;

publictest.Test();
Code:
0:aload_0
1:invokespecial#1;//Methodjava/lang/Object."<init>":()V
4:aload_0
5:iconst_5
6:putfield#2;//Fieldnumber:I
9:return

publicvoidsayHello();
Code:
0:getstatic#3;//Fieldjava/lang/System.out:Ljava/io/PrintStream;
3:ldc#4;//StringHello
5:invokevirtual#5;//Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
8:return

}


带参数-l: 将显示行号和局部变量表


-public 只显示 public 类及成员。

-protected 只显示 protected 和 public 类及成员。

-package 只显示包、protected 和 public 类及成员。这是缺省设置。

-private 显示所有类和成员。

G. idea中为什么查看jdk源码提示/* compiled code

查看到的源代码编译过的
想要看到未编译的,需要反编译或者找到未编译的源代码后,关联上去

H. 如何将e4a写的app反编译成源码

public String Getgtk(String skey) {
String Getgtk = "";
int hash = 5381;
for (int i = 0; i <= IntegerVariant.getIntegerVariant(文本操作.取文本长度(skey)).sub(ByteVariant.getByteVariant((byte) 1)).getInteger(); i++) {
hash = (位运算.位左移(hash, 5) + hash) + 转换操作.字符转代码(文本操作.取文本中间(skey, i, 1));
}
return 转换操作.整数到文本(位运算.位与(hash, (int) 转换操作.到十进制("7fffffff")));
}

I. java反编译

如今JAVA语言在全世界范围正如火如荼般的流行,它广范地应用在INTERNET的数据库、多媒体、CGI、及动态网页的制作方面。1999年在美国对JAVA程序员的需求量首次超过C++!

作者因最近分析一些JAVA程序,对JAVA的反编译进行了一番了解,下面将我所了解的情况作以下介绍,希望对JAVA爱好者有所帮助。

JAVA是采用一种称做“字节编码”的程序结构,分为小程序(嵌入到HTML文件中)和应用程序(直接在命令状态下执行)两种类型。无论哪种结构,一旦用JAVAC 命令编译后,均变成后缀为CLASS的同名可执行文件。这种文件是不可阅读的代码。

经查阅了SUN公司的JDK(JDK1.1.3)文档资料后,我找到了一个据称是可反编译JAVA的JAVAP文件(EXE),这个文件位于\JDK\BIN\ 下面,经按说明使用后,感到失望,原来这个“反编译”仅可反编译出JAVA程序的数据区(定义)、若干方法和类的引用等。

这里我用了一个简单例子来说明问题。

JAVA的源程序hello_java.java如下:

import java.applet.*;
import java.awt.*;
public class hello_java extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello Java!\n",20,20);
}
}

经用反编译命令:javap -c -package -public -private hello_java hello.java

得到的反编译结果(hello.java)如下:(有关javap命令的选择参数请见其使用说明,这里-c表示选择了反编译)

Compiled from hello_java.java
public synchronized class hello_java extends java.applet.Applet
/* ACC_SUPER bit set */
{
public void paint(java.awt.Graphics);
public hello_java();
Method void paint(java.awt.Graphics)
0 aload_1
1 ldc #1
3 bipush 20
5 bipush 20
7 invokevirtual #6
10 return
Method hello_java()
0 aload_0
1 invokespecial #5 ()V>
4 return
}

J. 怎么反编译软件

高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。 反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件: VB: VBExplorer 、VB反编译精灵和VBRezQ;只能反编译界面图像,好像代码不能完全反编译 JAVA: JAD ;java的反编译比较常见,所以反编译比较完全, 将class文件反编译成java文件也是有可能的 C++ : eXeScope Dephi: DEDE c#:Reflector 易语言:E-Code Explorer.exe(易格式可执行文件分析器)

热点内容
android相机闪光灯 发布:2025-05-16 14:35:49 浏览:258
服务器无法通过ip访问 发布:2025-05-16 14:26:13 浏览:540
网吧u盘拒绝访问 发布:2025-05-16 14:13:50 浏览:260
无线网检查网络配置是怎么回事 发布:2025-05-16 14:04:03 浏览:220
网络爬虫python代码 发布:2025-05-16 14:03:26 浏览:516
汽车小组件怎么弄到安卓桌面 发布:2025-05-16 13:51:12 浏览:220
linuxg编译器下载 发布:2025-05-16 13:50:58 浏览:776
centosc编译器 发布:2025-05-16 13:50:17 浏览:948
安卓手机如何变换桌面 发布:2025-05-16 13:39:33 浏览:515
sql存储过程命令 发布:2025-05-16 13:17:54 浏览:146