⑴ android如何做到防止反编译,保护自己的资源图片拜托了各位 谢谢
1.进行源码保护检测。检测DEX文件保护,查看DEX文件是否做了保护,避免法分子 反编译得到程序源码,从而杜绝恶意插入广告、恶意植入扣费代码等行为,保证用户体验以及APP的功能完整。 2.源码混淆保护检测。该项目主要用来弥补程序开发人员利用混淆源码做程序的漏洞,因为混淆源码作为一种常见的基础保护措施,并不严密,如果被专业人士利用,还是会造成相当程度的破坏。 3.资源文件保护检测。APP程序中的各种音频、视频、图片、文字等文件资料如果缺乏有效的保护,很容易被恶意篡改、替换和盗窃。比如程序中的音频格式或文字内容,如果被篡改,做成广告画面或违禁色情图片等,也是对开发人员和用户的权益侵害。 4. Android主配文件保护检测。该免费源码检测平台可以有效对Android主配置文件中的各个组件进行安全保护,预防其他人员在XML文件中插入代码,破坏和盗取相关信息,篡改应用程序的功能设定。 5.APK防二次打包保护检测。二次打包就是程序人员对下载的程序进行解压,删除原有的签名,自己设定一个签名工具在安装包上签名,这是一种盗用行为,侵害了原版程序设计人员的权益和利益。通过免费检测平台,可以有效查看安装包签名是否有过改动,可以有效防止二次打包的出现。 6、so文件保护,防止APP应用被第三方修改打包。 7.爱加密http://www.ijiami.cn/
⑵ c#如何防反编译
基本上无法防止反编译,但是可以控制发编译的效果,让反编译出来的代码无法正常查看。
大都使用混淆器,譬如.NET Reactor等等。
.NET Reactor 是一款强大的 .NET 代码保护和许可管理系统,安全可靠、简单易用,主要用来帮助开发人员保护他们的 .NET 软件产品。开发人员从此不必担心如何保护他们的知识产权,可以将更多精力放在产品功能的开发上。与模糊工具(Obfuscator)相比,.NET Reactor 可以完全阻止对 .NET 程序集(由 C#, VB.NET, Delphi.NET, J#, MSIL... 等语言编写)的反编译。通俗的讲,.NETReactor 在破解者和您的 .NET 代码之间构建了强大的防破解保护屏障,生成一个基于 Windows 的而不是基于 MSIL 的兼容格式文件。原始的 .NET 代码完整的封装在本地代码内,无论何时都不会释放到硬盘,对于破解者是不可见的,目前还没有任何工具可以反编译 .NET Reactor 保护过的程序集。
使用方法:
将本地.NET程序集放在.NET Reactor程序中保护即可。
⑶ android app怎么防止反编译
APK在PC上面就被看作一个压缩格式文件,在手机上面它就算一个可执行格式文件。两种格式对它的读取要求也有区别,所以说利用这个区别来实现伪加密。对PC端来讲伪加密的APK没法被解包无法被反编译,但是对android系统来说它完全不会影响正常的安装运行(对4.2以前的系统)。
伪加密的原理:读取APK的字节,找到连续4位字节标记为”P K 01 02”的后第5位字节,如果是0表示不加密,如果是1就表示加密(伪加密就强行改成1 反伪加密就是把1改成0就可以了)。
2
伪加密前和伪加密后的对比图如下:
伪加密前:
3
伪加密后:
END
使用第三方平台加密
步骤如下:
登录/注册→上传APK→等待系统加密→完成后下载APK→给APK签名→完成!
2
爱加密作为移动安全行业的第三方平台,为Android APP移动应用提供专业的加固保护方案,包括DEX文件保护、资源文件保护、XML主配文件保护、防二次打包保护、so文件保护、内存保护、高级混淆等,全方位保护Android App,防止被反编译、破解等,维护广大开发者朋友的切身利益!
⑷ 怎么防止java开发出来的程序被别人反编译
防止Java开发出来的程序被别人反编译有很多种方法,下面给你介绍几种:
1、隔离Java程序
最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。
2、对Class文件进行加密
为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。
3、转换成本地代码
将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。
4、代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。
不同保护技术比较希望能给大家带来参考:
⑸ C#如何防止被别人反编译
C# 编写的代码通过VS编译器生成 dll 或 exe ,很容易被一些反编译工具查看到源码或对源码进行修改。
为防止代码被反编译或被篡改,我们可以进行一定的防范措施。但不能杜绝,因为DotNet编写代码运行必须编译成IL 中间语言,IL是很规则,同时也很好反编译。
反编译防范措施:
设置项目代码反汇编属性
混淆
方法一:防止 Ildasm.exe(MSIL 反汇编程序) 反汇编程序集
方法很简单在项目文件AssemblyInfo.cs中增加SuppressIldasm属性。
效果很明显,很难看出反编译代码所写的真正逻辑。
缺点:
C#代码通过混淆工具生成后,增加了很多转换过程。这使得反编译工具无法很直观看到源码真正逻辑。但源码代码过多转换会使软件本身运行效率降低,甚至会出现报错情况。
⑹ visual foxpro程序防止反编译
在“项目”-“项目信息”中切换到“项目”选项卡,勾选“加密”,这样可以防止通过分离提取出app文件以非常方便地看到源代码了,最少地保障安全。
VFP程序如果连编成exe,那么exe本质上是外层一个解释器,内层是需要解释的app文件,所以,也可以采取更换解释器的方法来防止反编译。以前有高手开发过,现在找不到了。
但是要真的完全防止反编译,那从某些方面来讲,就是非常传统的加壳了——但是,加壳也没法保证100%安全。
⑺ C#写出来的代码,反编译之后能看到源代码,怎么样防止别人的反编译。求高手指点
C#代码最终会被编译为 IL,对 IL 进行逆向工程比较简单,因此一种办法是向第三方购买一个混淆器(obfuscator),能通过打乱程序集元数据中的私有符合名称,让人难以阅读。但本质上,这种保护是有限的,只是难以阅读,而不能从根本上避免。
另一种办法是,在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难。
一般来说,除非你的这部分代码非常重要,或涉及核心机密,才需要考虑防止反编译的做法。一般来说,混淆器也足够了。
⑻ dll如何防止反编译
1
将你要破解的DLL文件放在C盘
2
执行 开始》所以程序》Microsoft Windows SDK v6.0A》tools》IL 反汇编程序
3
找到放在C盘的DLL文件
4
然后 文件》转储》确定位置并确认
5
好了 看看C盘是否多了 两个文件 xxx.il xxx.res
6
修改 xxx.il 文件内的代码
7
修改完成后将xxx.il和 xxx.res 把这两个文件复制到 C:\Program Files\Microsoft Visual Studio 9.0\VC这个目录下
8
然后执行:开始》所以程序》Microsoft Visual Studio 2008》Visual Studio Tools》Visual Studio 2008 命令提示
9
执行:ilasm /dll /resource=xxx.res xxx.il xxx代表你取的名字
10
然后去看看C:\Program Files\Microsoft Visual Studio 9.0\VC 这个目录下是不是多了一个xxx.dll文件 把编译出来的文件拿去使用就OK了
注意事项
一定要确定文件名称和位置不能有错!
⑼ 维纶触摸屏设置禁止反编译如何破解
打开eb8000软件,然后打开你的工程。点击
工具,选择编译,打开后里面就有禁止反编译的选项,勾选即可。
满意请及时采纳哦!
⑽ 如何防止JAVA程序源代码被反编译
我们都知道JAVA是一种解析型语言,这就决定JAVA文件编译后不是机器码,而是一个字节码文件,也就是CLASS文件。而这样的文件是存在规律的,经过反编译工具是可以还原回来的。例如Decafe、FrontEnd,YingJAD和Jode等等软件。下面是《Nokia中Short数组转换算法》
类中Main函数的ByteCode:0 ldc #162 invokestatic #185 astore_16 return其源代码是:short [] pixels = parseImage("/ef1s.png");
我们通过反编译工具是可以还原出以上源代码的。而通过简单的分析,我们也能自己写出源代码的。
第一行:ldc #16
ldc为虚拟机的指令,作用是:压入常量池的项,形式如下ldc index这个index就是上面的16,也就是在常量池中的有效索引,当我们去看常量池的时候,我们就会找到index为16的值为String_info,里面存了/ef1s.png.
所以这行的意思就是把/ef1s.pn作为一个String存在常量池中,其有效索引为16。
第二行:2 invokestatic #18
invokestatic为虚拟机指令,作用是:调用类(static)方法,形式如下
invokestatic indexbyte1 indexbyte2
其中indexbyte1和indexbyte2必须是在常量池中的有效索引,而是指向的类型必须有Methodref标记,对类名,方法名和方法的描述符的引用。
所以当我们看常量池中索引为18的地方,我们就会得到以下信息:
Class Name : cp_info#1
Name Type : cp_info#19
1 和19都是常量池中的有效索引,值就是右边<中的值,再往下跟踪我就不多说了,有兴趣的朋友可以去JAVA虚拟机规范。
这里我简单介绍一下parseImage(Ljava/lang/String;)[S 的意思。
这就是parseImage这个函数的运行,我们反过来看看parseImage的原型就明白了
short [] parseImage(String)
那么Ljava/lang/String;就是说需要传入一个String对象,而为什么前面要有一个L呢,这是JAVA虚拟机用来表示这是一个Object。如果是基本类型,这里就不需要有L了。然后返回为short的一维数组,也就是对应的[S。是不是很有意思,S对应着Short类型,而“[”对应一维数组,那有些朋友要问了,两维呢,那就“[[”,呵呵,是不是很有意思。
好了,调用了函数,返回的值要保存下来吧。那么就是第三行要做的事情了。