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

反编译obj

发布时间: 2025-03-26 20:47:55

Ⅰ 混淆的class文件怎么进行反编译

一般情况下java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。
从研究的角度,浅析如何读懂这种反编译过来的文件。
例子一:赋值
反编译过来的代码如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始语句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
JVM INSTR swap ; //赋值语句
练习:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;

例子二:不带参数创建对象
反编译过来的代码如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始语句:
CrossTable crosstable = new CrossTable();
注解:
练习:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:带参数创建对象
反编译过来的代码如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;

原始语句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
此语句实际上是:s2 += s.substring(j, i) + s6;
练习:
例子四:for循环
反编译过来的代码如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始语句:
for(int k=0;k < as.length;k++)
{
...
}
注解:
例子五:while循环
反编译过来的代码如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始语句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}

Ⅱ 已知一个程序是C++编写的,有没有办法把她恢复成C++源代码

C/C++程序(.c/.cpp),首先会进行预编译,编译后还是C/C++程序(.i)。这个结果会再进行编译,结果会是汇编代码文件(.s)。汇编代码文件再进行汇编,结果会是可重定位的目标文件(.obj)。可重定位的目标文件再进行链接。结果就会产生可执行的目标文件,也就是通常win32平台上的.exe文件。
对于.exe或者.obj文件,我们可以通过反编译工具(如Unix下的objmp)把它们还原成汇编代码文件。但是再要往上一步,从编译原理的角度来说,就很困难了。目前这样的工具我还没听说过。

Ⅲ java强制类型转换:int i = (int)obj转换过程是怎样的

因为有Integer这个包装类,

如图是使用javap -c xx.class命令查看的反编译代码,Obj 1 = 1;其实是Obj 1 = Integer.valueOf(1);obj转int其实是obj转Integer再调用intvalue()方法转换成int类型

热点内容
怎么看服务器支持伪装ip 发布:2025-03-29 23:07:33 浏览:325
卡宴和卡宴s配置有什么不同 发布:2025-03-29 23:02:20 浏览:262
R参数编程 发布:2025-03-29 22:59:50 浏览:240
连接sqlserver2008 发布:2025-03-29 22:47:24 浏览:625
电信开户密码是多少 发布:2025-03-29 22:44:53 浏览:505
vivo手机存储空间怎么清理 发布:2025-03-29 22:43:59 浏览:958
tv之家密码是多少 发布:2025-03-29 22:43:50 浏览:322
lol脚本连招 发布:2025-03-29 22:09:58 浏览:789
楚留香电脑服务器与手机一致吗 发布:2025-03-29 22:05:41 浏览:648
压缩小包 发布:2025-03-29 21:59:11 浏览:737