导航:首页 > 源码编译 > 反编译程序员厉害吗

反编译程序员厉害吗

发布时间:2022-06-10 11:47:41

A. 如何防止程序员编译

java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android开发的app),有时候,公司为了商业技术的保密考虑,不希望这里面的一些核心代码能够被人破解(破解之后,甚至可以被简单改改就发布出去,说严重点,就可能会扰乱公司的正常软件的市场行为),这时候就要求这些java代码不能够被反编译。

这里要先说一下反编译的现象。因为java一直秉持着开放共享的理念,所以大家也都知道,我们一般共享一个自己写的jar包时,同时会共享一个对应的source包。但这些依然与反编译没有什么关系,但java的共享理念,不只是建议我们这样做,而且它自己也在底层上“强迫”我们这么做!在java写的.java文件后,使用javac编译成class文件,在编译的过程,不像C/C++或C#那样编译时进行加密或混淆,它是直接对其进行符号化、标记化的编译处理,于是,也产生了一个逆向工程的问题:可以根据class文件反向解析成原来的java文件!这就是反编译的由来。

但很多时候,有些公司出于如上述的原因考虑时,真的不希望自己写的代码被别人反编译,尤其是那些收费的app或桌面软件(甚至还有一些j2ee的wen项目)!这时候,防止反编译就成了必然!但前面也说过了,因为开放理念的原因,class是可以被反编译的,那现在有这样的需求之后,有哪些方式可以做到防止反编译呢?经过研究java源代码并进行了一些技术实现(结果发现,以前都有人想到过,所以在对应章节的时候,我会贴出一些写得比较细的文章,而我就简单阐述一下,也算偷个懒吧),我总共整理出以下这几种方式:

代码混淆

这种方式的做法正如其名,是把代码打乱,并掺入一些随机或特殊的字符,让代码的可读性大大降低,“曲线救国”似的达到所谓的加密。其实,其本质就是打乱代码的顺序、将各类符号(如类名、方法名、属性名)进行随机或乱命名,使其无意义,让人读代码时很累,进而让人乍一看,以为这些代码是加过密的!

由其实现方式上可知,其实现原理只是扰乱正常的代码可读性,并不是真正的加密,如果一个人的耐心很好,依然可以理出整个程序在做什么,更何况,一个应用中,其核心代码才是人们想去了解的,所以大大缩小了代码阅读的范围!

当然,这种方式的存在,而且还比较流行,其原因在于,基本能防范一些技术人员进行反编译(比如说我,让我破解一个混淆的代码,我宁愿自己重写一个了)!而且其实现较为简单,对项目的代码又无开发上的侵入性。目前业界也有较多这类工具,有商用的,也有免费的,目前比较流行的免费的是:proguard(我现象临时用的就是这个)。

上面说了,这种方式其实并不是真正加密代码,其实代码还是能够被人反编译(有人可能说,使用proguard中的optimize选项,可以从字节流层面更改代码,甚至可以让JD这些反编译软件可以无法得到内容。说得有点道理,但有两个问题:1、使用optimize对JDK及环境要求较高,容易造成混淆后的代码无法正常运行;2、这种方式其实还是混淆,JD反编译有点问题,可以有更强悍的工具,矛盾哲学在哪儿都是存在的^_^)。那如何能做到我的class代码无法被人反编译呢?那就需要我们下面的“加密class”!

加密class

在说加密class之前,我们要先了解一些java的基本概念,如:ClassLoader。做java的人已经或者以后会知道,java程序的运行,是类中的逻辑在JVM中运行,而类又是怎么加载到JVM中的呢(JVM内幕之类的,不在本文中阐述,所以点到为止)?答案是:ClassLoader。JVM在启动时是如何初始化整个环境的,有哪些ClassLoader及作用是什么,大家可以自己问度娘,也不在本文中讨论。

让我们从最常见的代码开始,揭开一下ClassLoader的一点点面纱!看下面的代码:

Java代码

B. 程序员和黑客哪个更厉害

程序员更厉害 。
因为黑客只会搞破坏,程序员会修复 。
所以程序员也会搞破坏,但他更会修复 。而黑客他修复不了 。

C. 最好的程序编程员不一定是最好的黑客 当最好的黑客一定是最好的程序员 是真的吗

不对,程序员不是黑客,黑客需要计算机基础却不是程序员,共同的是计算机基础,不同的是研究方向,程序员成为黑客要学习网络安全,黑客成为程序员也需要真正的项目工作经验,别以为看点编程书籍写的代码就能上线了。。。毕竟安全性只是系统性能的一个方面而不是全部,凭着懂安全就想当最好的程序员开什么玩笑。。。

D. 程序员成为自由职业者靠谱么

成为自由职业者曾是年少时的小资情怀,有种几米漫画中主人公的感觉。六年职场生涯屡次尝试,无奈胆识未到,贪恋于大公司的高薪,都浅尝辄止。半年前身心俱疲,邀一好友共同创业,偶见此贴,突然觉得自己现在就是个自由职业者。所以谈谈自己的看法。
其实所谓“自由职业者”,看似重点在“自由”(大多数人也都是奔着这个去的),其实隐含着的是“赚钱”——小说里“累了旅行,闲了干活”的日子也是需要钱来支撑的。所以靠不靠谱,就看你怎么赚钱了。这里列举几个国内常见的程序员个人赚钱的渠道:
1.
传统的线下接项目
应该有不少程序员都有类似的“接私活”经历吧,朋友或是朋友的朋友的公司可能想做一些宣传网站、后台管理系统等等,费用从几百到几万元不等。
这种活大多由非IT公司发出,技术含量不高,但沟通成本极高,老板不懂互联网不懂用户,业务朝令夕改,今天说好明天就变,有的做了一个月跟你说项目不做了,有的拿了你的代码反编译给别人去做——什么稀奇古怪的事都有,前期合同不顶用,中期业务反复无常,后期收款拖欠厉害。
打算由这种方式来维持“自由职业”的程序员,必须有两个特质:要么运气特别好;要么业务能力特别强(不是技术,在项目涉及的业务领域上走在客户前面,知道客户真正想要什么,想客户之想不到,也包括沟通能力)。当然,还有一点是必须的,就是朋友多,有活干。

E. 反编译VB程序

反编译这种东西其实是不存在的,所谓的反编译其实就是反汇编。
就连.net写出来的程序反编译也不可能直接得到代码。
如果用一个软件就能把程序反编译,所有程序员都该事业了,还费劲脑汁编什么,直接反编译别人的不就好了。
如果你想学习反汇编这方面知识,首先要有一个清醒的头脑,很显然你的头脑现在还不够清醒,属于小菜鸟级别的,幻想着把别人写好的程序反编译出来然后改改就成自己的了。
醒过来!!啪!啪!!

F. 听一个同事说程序员真的那么厉害可以破解网站后台吗

1、未经授权破解网站后台篡改数据是违法行为;
2、有些劣质的网站后台安全措施的确很烂,会有漏洞容易被破解;
3、但不是所有的程序员都能破解网站后台,也不是所有的网站后台能被破解。

G. 大家都知道高级程序员很吃香,那么高级程序员和黑客到底谁更厉害

非从业人员对于程序员和黑客的外在形象就存在着不一样的认知,因为电视电影和网络上的段子,普通的程序员一般都是有才能却一点不风趣的男性,常年一件格子衬衣,几根稀疏的头发,虽然赚的钱不少,却不会花钱装扮自己;而黑客的形象就完全是另一种,他们很神秘,可能我们身边随便一个人在暗地里都可以是黑客,黑客还喜欢穿黑衣服,带黑色的帽子,不喜欢以真面目示人。

相对的,普通程序员也不会关注黑客关注的很多点,比如CAPTCHA这种可能就直接引入个第三方的来防御了,并不会自己去实现一遍。还有加密算法这种,也几乎只有黑客才会去研究。普通程序员可能研究的就是压缩算法。黑客的攻击手段多种多样,有的甚至不会写代码,比如《我是谁–没有绝对安全的系统》里就有一位,根本不写代码,通过翻垃圾桶,开锁偷看资料这类操作搜集很多有用的信息,从而发起攻击。一般称这种为手段‘社工攻击’。

H. 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
}

I. 求反编译能力强的.net程序员,想修改一个程序,但是没有源代码,反编译可以修改吗

下载个.net reflector软件,只要没有经过处理的.net程序集,都可以直接查看程序集内源码

但是要修改的话就蛋疼了,估计可以把源码拷贝出来,然后再自己重建工程编译,或者找牛人写个犀利工具一步到位

J. 程序员很厉害吗

程序员只是在编程方面很厉害,其他的方面并不比别人强,甚至还会比别人差。

阅读全文

与反编译程序员厉害吗相关的资料

热点内容
積架小型空气压缩机 浏览:555
绿盾文档加密系统哪里有卖 浏览:637
我的世界怎么开挂在服务器里面 浏览:789
西门子自锁正反转编程图 浏览:749
出国英语pdf 浏览:920
算法线性匹配 浏览:674
山东省dns服务器云主机 浏览:554
安卓5g软件怎么隐藏 浏览:839
编译内核空间不足开不了机 浏览:887
汉纪pdf 浏览:474
在哪里下载国家医保app 浏览:657
没有与文件扩展关联的编译工具 浏览:426
我的世界反编译mcp下载 浏览:19
安卓手柄下载什么软件 浏览:70
pushrelabel算法 浏览:850
硬盘资料部分文件夹空白 浏览:617
cssloader的编译方式 浏览:941
java面板大小 浏览:506
怎么用命令方块打出字体 浏览:500
台湾加密货币研究小组 浏览:299