android jni 使用第三方提供的.so库及所对应的jar包
1.将SO文件直接放到libs/armeabi下,然后代码中System.loadLibrary("xxx");再public native static int xxx_xxx_xxx();接下来就可以直接调用xxx_xxx_xxx()方法;
2.第二种方案,创建自己的SO文件,在自己的SO文件里调用第三方SO,再在程序中调用自己的SO,这种比较复杂,需要建java类文件,生成.h文件,编写C源文件include之前生成的.h文件并实现相应方法,最后用android NDK开发包中的ndk-build脚本生成对应的.so共享库。 http://www.ijiami.cn/newsInfo?id=293v=3
2. DEX加壳保护,DEX指令动态加载保护和高级源码混淆保护。其中DEX加壳保护是“爱加密”主推的卖点,该技术通过将DEX文件隐藏,并生成一个类似于虚像的壳文件,阻止黑客利用反编译工具获取App源码。另外,爱加密http://www.ijiami.cn/推出了so库保护,使得C/C++ 层面的代码安全也得到防护。加上资源文件保护(图片、音频等文件的防查看和防修改)、xml 主配文件保护(对主配文件进行二次签名)、内存保护等措施,可以基本保证App的动态和静态安全。
java用于加密解密的所有jar包都有哪些?包括对称与非对称加解密
apache的commons-codec中各种字符转化, 加密都有
例如md5和sha1加密
hex转换, base32, base64转换
附件是jar包
java.security包的jar包叫什么
\jdk1.6.0 -- JDK的根目录,包含一些软件版权,声明,和自述文件,
同时包含归档了的Java平台源代码包src.zip
\jdk1.6.0\bin -- JDK包含的一些开发工具执行文件
\jdk1.6.0\jre\bin\client
包含 Java HotSpotTM Client Virtual Machine 要用的 DLL 文件
\jdk1.6.0\jre\bin\server
包含 Java HotSpotTM Server Virtual Machine 要用的 DLL 文件
\jdk1.6.0\lib -- Java开发工具要用的一些库文件,有包含了支持JDK工具的非核心类库tool.jar,
dt.jar 归档的 BeanInfo 文件
用于告诉IDE这样显示java组件怎样让开发者在自己的应用程序中用户化它们
\jdk1.6.0\jre -- JDK使用的Java运行环境(JRE)的根目录,这个运行环境实现了Java平台
\jdk1.6.0\jre\bin -- Java平台所要用的工具和库的可执行文件
这些可执行文件和 /jdk1.6.0/bin相同的。
//Java 启动器工具充当了应用程序启动器(覆盖了1.1版本的JDK推出的旧版本JRE工具)
这个路径不需要设置 PATH 环境变量
\jdk1.6.0\jre\bin\client -- 包含Java Hotspot(Java性能引擎) 客户虚拟机要用的DLL文件
\jdk1.6.0\jre\bin\server -- 包含Java Hotspot(Java性能引擎) 服务器虚拟机要用的DLL文件
\jdk1.6.0\jre\lib -- JRE要用的代码库,属性设置,资源文件。
例如rt.jar Java 引导类库(java 核心APIRunTime类)
charsets.jar 字符转换类库
\jdk1.6.0\jre\lib\ext -- 默认的Java平台扩展安装环境
包含localedata.jar 是 ava.text 和 java.util包要用到的地区数据
\jdk1.6.0\jre\lib\security -- 包含安全管理文件,有安全规则(java.policy)
和安全属性文件(java.security)
\jdk1.6.0\jre\lib\applet -- Java applets 要的Jar包,可以放到lib/applet/目录,
这样可以节省 applet 类装载器从本地文件系统装载 大的applets 所需的applet类时间
减少从网上下载具有相同的保护的时间。
\jdk1.6.0\jre\lib\fonts 包含平台所需的TrueType字体文件
如何有效的防止Java程序被反编译和破解
由于Java字节码的抽象级别较高,因此它们较容易被反编译。下面介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。
1.隔离Java程序
最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。
2.对Class文件进行加密
为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。
在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因,Applet不能够支持自定义的ClassLoader)。自定义的ClassLoader首先找到加密的类,而后进行解密,最后将解密后的类装载到JVM当中。在这种保护方式中,自定义的ClassLoader是非常关键的类。由于它本身不是被加密的,因此它可能成为黑客最先攻击的目标。如果相关的解密密钥和算法被攻克,那么被加密的类也很容易被解密。
3.转换成本地代码
将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法。
4.代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术。
用JAVA开发远程控制软件靠谱吗??
没有什么不靠谱的,只有你想不到的,
我到是有个思路,
你把java远程控制写好了(当然,写不出来想灰鸽子那么强大的而已)
然后你在把你生成出来的jar包含在c或者c++里面,
然后rou鸡在运行的时候,直接运行的是c或者是C++的程序,
c或者C++先看rou鸡有没jre,如果没有,那么他在自动下载,自动安装。
然后在把他程序里面的jar导出来,然后在运行jar。
当然,c++和java相比c++更适合写这些,因为他本来就是底层语言,(接近于操作系统),而java是高级语言,(接近应用程序)。
比如注入进程,java是可以实现的,(是可以实现,但是并不是java真正的去实现。而是用JNI,调用C或者C++或者其他语言写的代码去执行)。
所以java是可以写的,
只是没c++,c写的那么强大而已。如果java没有了JNI,那么我想可能根本就没java这们语言了。
如果调用第三方jar包的资源文件,在制作jar包和告诉别人如何调用你的jar包时经常用到。通常有两种方法,具
1)在应用程序端访问第三方jar包里面的raw文件,方法如下:InputStream is=org.hisense.facerecog.R.class.getResourceAsStream("data.xml");File cascadeDir = this.getDir("cas", Context.MODE_PRIVATE);mCascadeFile = new File(casDir,"data.xml");FileOutputStream os = new FileOutputStream(mCascadeFile);其中org.hisense.facerecog.R为jar包中资源文件R.java的路径,this为当前应用程序环境。2)在第三方jar包中直接访问其资源文件,将其拷贝到应用程序端,需要给出应用程序环境:Context context方法如下:InputStream is = this.getClass().getResourceAsStream("/res/raw/ data .xml");File cascadeDir = context.getDir("cas", Context.MODE_PRIVATE);mCascadeFile = new File(casDir," data.xml");FileOutputStream os = new FileOutputStream(mCascadeFile);其中this为第三方jar中的类运行环境,context为应用程序环境。
JAVA加密解密要用到的JAR包
一般java加密解密都需要jar包的,不同的加解密方式对应
不同的加解密包,一般加解密方式有这么几种。
资料链接:http://www.doc88.com/p-19252566394.html