反编译原理
Ⅰ 反编译一个易语言程序可以做到吗
反编译的原理应该是一个语言的语法关键字和程序的汇编结构有相同部分,然后就类似查找替换这样哒。不过需要一个翻译引擎and蛮多的工程,可以倒是可以所以说
然后以前的易语言程序倒是可以,现在的话易语言换了编译方式所以emmmm,略难
Ⅱ 请问什么是反编译,原理是怎么样的
反编译
高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。
但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
Ⅲ c/c++是如何破解软件的
如果知道软件写的语言最好不过了,对你破解会有很大的促进
然后要破解的话,有些软件是会加壳保密的,这个时候就必须脱壳,不过这个脱壳还是不复杂,毕竟是因为这个没有办法你自己来写脱壳,现成的工具就好,记得aspackdie好像就可以,要的话可以发给你,
我记得自己手动的尝试破解一个软件就用微软的记事本来练习,但是发现到后来不知道自己应该干嘛了,因为很多涉及到基础的编码,汇编语言的知识,到后面能够猜出一些东西,真的要到自己去修改它的时候,发现并没有想象的那么简单
说实话用c/c++破解,我的技术水平是远远不够的,真的想要深入的学习的话,可以先从学习汇编语言和编译原理反编译原理开始学习,可以买一些专业的书籍学习,只是一时好奇建议没有必要,水很深...囧rz
/*************************电泡泡*************************/
Ps:如想进一步交流请直接hi我,或者email [email protected] 望采纳
Ⅳ 如何让C++写的dll不被反编译
简单回答:
1、理论上不能保证程序不被反编译。
2、一些加壳软件可以做到加大被反编译的难度,迫使操作者先解壳才能做反编译,但同时会降低程序的运行效率。
3、当前的技术条件下,一般而言,反编译出的“源代码”一般而言并不能作学习,参考的源代码,多数情况下只能用于分析区部片断分析,主要用于破解或小范围类修改。
4、一些简单的加壳软件:ASPACK、UPX、PECompact等,如果想尝试,自个去搜索下载后试试。加壳后的软件还有可能被某些杀软当成恶意软件。
5、这也正是很多对安全要求高的系统使用“三层架构”(类似访问网页/网站)的原因。因为在三层架构中,核心软件、数据不被用户直接接触。
************以下是相关知识,有耐心可看看************
一、关于反编译与破解。
1、以当前的技术来说,理论上,所有的程序都存在被反编译的可能。
2、但是反编译出来的代码并不一定能被技术不高的人看懂,因为反编译出来的“源代码”与编写者写出的原代码在80%以上是不同的。这是因为反编译的原理是根据机器码(或中间码),让机算机进行反向生成高级语言,而不是找出编写者原有的代码,找出原有的代码是不可能的。反编译出来的代码在可理解性、可阅读性上,一般而言是非常差的。
3、但是,这并不代码反编译出来的“源代码”没有价值,对于内行来说,分析反编译出来的代码中的某些特定片段,就可以对程序进行破解,找出程序的关键点、口令、数据来源等等。因为破坏总是比建设要容易,分析局部比规划全局要容易得多。
4、如果考虑到被反编译将关键代码进行特殊处理的话,可能加大相关的难度,比如将特定的字符串分成多个字串在程序中存储,或是进行加密后存储,在使用时合成/生成,不用时即时在内存中清除等等……。
5、反编译后对关键部分的定位往往是根据字符串来进行的,比如在用户没有注册时,跳出一行对话,告诉用户“请注册后再使用”,破解者就会在反编译后追查这个字串所在,然后查到这个字串对应的变量与地址,再追查调用这个变量或地址的代码,然后再延伸查到什么情况下调用“调用这个变量或地址的代码”,最后,设定跳过语句。这就是最典型的破解注册的方法。破解完再将修改了的“源代码”进行编译,或是根据“源代码”直接修正程序中对应的代码,OK,破解版正式完成。
二、关于加壳。
1、理论上,同样,没有破解不了的壳。
2、但是有些加壳软件使用了一些特别的方法,使得破解壳的难度变得非常难,技术不够的朋友很难下手,比如将原程序代码拆分、变型、植入自校验等等技术。
3、但加壳软件同样是程序,它自身就存在被反编的可能,加了壳可以类比成,在一个木箱外面再加个保险柜。但千万别以为保险柜就一定是保险的,面对各种技术开锁、暴力开箱,再强的保险柜也只能是加大难度而已。
4、越复杂的加壳,就会使得程序运行时效率降得越低,这是必然的,因为原本只关注目标任务的程序现在还要时时提防着被提取、被监测。
Ⅳ frontend反编译的原理是什么求大神帮助
以下摘录于Delphibbs中Dr.yysun 的回答,希望对你有帮助用 java 编程的人, 如果不想公开源程序, 就得与反编译器作斗争,必须使用反编译器,先看看别人将会如何看你的程序,再看看Obfuscators(扰乱器)的效果.JAD 是 Windows 下效果极佳的反编译器 http://www.geocities.com/SiliconValley/Bridge/8617/jad.html 围绕这个引擎, 有很多图形界面, 例如 FrontEnd. (我常用)JODE 是免费的 Java 反编译器和优化器. http://jode.sourceforge.net/ Intr@byte 是个 JBuilder 的外挂工具 (OpenTool), 使得您在 JB 中能打开 *.class http://www.webappcabaret.com/bjb/index.jsp 它也使用 JAD 引擎, 并限制为只反编译器类的定义部分.有些网站可以帮您反编译, 您给个 URL, 它分析出其中有多少个 applet,然后, 再反编译掉. http://www.jreveal.org/ 最后, 您想了解反编译原理, 想自己编个反编译器和扰乱器, 这里有本免费得书 . http://www.riis.com/depile.html 其他到 yahoo 里找吧, 太多了.JJams_King: 扰乱器就是把 bytecode 中的类名,方法名,变量名等变成无意义的符号。例如,以下源程序:package temp;public class HelloWorld { String helloWorld = "Hello World"; String byeWorld = "Bye World"; public static void main(String[] args) { new HelloWorld(true); new HelloWorld(false); } HelloWorld(boolean isHappy) { if (isHappy) { System.out.println(helloWorld); } else { System.out.println(byeWorld); } }}加扰后,再反编译出来是:package a;import java.io.PrintStream;public class a{ String a; String b; a(boolean flag) { a = "Hello World"; b = "Bye World"; if (flag) System.out.println(a); else System.out.println(b); } public static void main(String astring[]) { new a(true); new a(false); }}而更高级的扰乱器,还能加密字符常量和扰乱程序流。加扰后,再反编译后变成这样:package a;import java.io.PrintStream;public class a{ String a; String b; public static boolean c; a(boolean flag) { a = a("q\0041\033/\03162\005,]"); b = a("{\0308W\027V\0231\023"); if (!flag) goto 42 else 26; System.out.println(a); if (!c) goto 52 else 42; System.out.println(b); } public static void main(String astring[]) { new a(1); new a(0); } private static String a(String string) { char ach[]; int i; int j; int k; ach = string.toCharArray(); i = ach.length; j = 0; k = 0; expression 57 expression ach expression j expression 97 expression ach expression j expression 93 expression ach expression j expression 119 expression ach expression j expression 64 expression ach expression j p 2 over 1 push [] ^ pop [] j++; k++; if (i == j) return new String(ach); expression k switchcase 1: goto 21case 2: goto 29case 3: goto 37case 4: goto 45case 5: goto 10default: goto 54 }}你想破译其中的思路可就难了 :)以上资料摘自: http://www.zelix.com/klassmaster/
Ⅵ 请问什么是反编译,原理是怎么样的
反编译
高级语言源程序经过
编译
变成可执行文件,反编译就是逆
过程
。
但是通常不能把可执行文件变成高级语言
源代码
,只能转换成
汇编程序
。
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人
软件
的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的
软件产品
所使用的
思路
、
原理
、
结构
、
算法
、处理过程、运行方法等设计
要素
,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
Ⅶ 反编译原理和书籍
什么反编译原理?
有《编译原理》这本书和《程序设计语言编译原理》
如果是学逆向思维和软件破解就看《看雪论坛精华1~9》
Ⅷ 反编译原理是什么
反编译的流程,就是虚拟一个执行环境,看程序执行了那些指令,翻译成相应的语句
一般的流程是先把程序调入到数据段,虚拟运行环境,一般这分配文件头部,从纪录指令程序数据段,载入到虚拟环境中,纪录指令,遇到跳转指令,压入栈,形成树结构(看数据结构),遍历每个节点的指令。形成完整程序。
Ⅸ 谁有办法把class文件反编译为java吗,不能出任何错误。我用jd总是有错误,而且好像有层级限制
jd只是适合少量class文件,如果太多的话,类的引用就太繁琐了,偶尔会出错。我也是用XJAD反编译的,它可以反编译一个jar包。反编译有啥原理呢?虚拟机将*.java文件编译成字节码(*.class文件)然后,在编译成本地机器码,执行;我们一般用来传播的也就是*.class文件,这是一种有标准格式的字节码,开发工具按这个格式在将转换为*.java程序,就这样咯。而且,如果你要学了*.class文件的结构,自己都能计算出对应的*.java文件,只不过很复杂,很繁琐。
Ⅹ 如何把JAR包里的.class文件转化成.java文件。求反编译原理,不要工具。谢谢,我没分......
字节码要转回java源文件是不太可能的
你可以去看一下啊有关字节码的书
对于class的文件 你可以用javap这个指令来看一下他的结构的