java调用c++写的des加密dll程序,知道怎么实现吗

java调用c++写的des加密dll程序,知道怎么实现吗,第1张

JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。

简单介绍及应用如下:

一、JAVA中所需要做的工作

在JAVA程序中,首先需要在类中声明所调用的库名称,如下:

static {

SystemloadLibrary(“goodluck”);

}

在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。

还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具 体实现。如下:

public native static void set(int i);

public native static int get();

然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。

例如程序testdlljava,内容为:

public class testdll

{

static

{

SystemloadLibrary("goodluck");

}

public native static int get();

public native static void set(int i);

public static void main(String[] args)

{

testdll test = new testdll();

testset(10);

Systemoutprintln(testget());

}

}

用javac testdlljava编译它,会生成testdllclass。

再用javah testdll,则会在当前目录下生成testdllh文件,这个文件需要被C/C++程序调用来生成所需的库文件。

net的实时编译(JIT)特性决定了用它开发的程序可以被轻松反编译,同时由于采用反射等技术,使得DLL能被未授权调用。

所以要想不被破解,一是不能被反编译看到源码,二是不能被随意调用。

什么混淆加壳加密等,都是可逆的。鉴于net代码可以包含非托管代码,我们可以用C++解析C#代码生成DLL,这个DLL在被调用时验证调用者信息,就可以解决针对C#的破解,以及非授权调用了。

参考链接:>

以上就是关于java调用c++写的des加密dll程序,知道怎么实现吗全部的内容,包括:java调用c++写的des加密dll程序,知道怎么实现吗、C# DLL如何保护防止被破解、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9675431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存