众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。
为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆方式,这种方式对于Class文件的加密是不彻底的,还是能够通过分析得出核心算法。
本工具是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先用加密库对Jar包进行加密,将加密后的Jar包及解密库文件发布出去,执行时候需要JVM引入解密库文件,解密后执行。
c++的.dll文件和.so文件的破解难度是很大的,这就能有效的保护软件和代码的知识产权.使用方法:1.打开windows命令行(运行=>cmd=>回车),在命令行中进入EncryptJar目录2.执行java-jarencrypt.jar3.输入h,然后回车,可以看到帮助菜单4.输入3,然后按回车键,进入加入jar文件功能5.输入要加密的jar文件的路径6.提示输入秘钥(key)的时候,直接回车,不要输入任何字符(否则后面classhook将不可解密加密后的jar包)7.输入目标路径(加密后的jar文件路径,此处要注意:jar文件名要保持相同,将加密后的文件保存到不同的目录)8.将加密后的jar包,替换原来的没有加密的jar包,与要发布的程序一起进行发布.(一般替换lib目录下对应的jar包即可)9.加密后的jar包运行方法:windows下:拷贝libClassHook.dll文件到程序的根目录(通常为要执行的jar程序的根目录)使用以下命令启动程序:java-agentlib:libClassHook-jarxxxxxxxxxxx.jar则在运行过程中会自动进行解密操作(解密过程是运行过程中用c++的dll进行解密的,可以有效防止破解class文件)如果执行过程报错,可将程序根目录添加到环境变量path中去Linux下:拷贝libClassHook.so到程序的根目录(通常为要执行的jar程序的根目录)使用以下命令启动程序:java-agentlib:ClassHook-jarxxxxxxxxxxx.jar(这里要删除掉lib,linux系统下会自动补全)则在运行过程中会自动进行解密操作(解密过程是运行过程中用c++的dll进行解密的,可以有效防止破解class文件)如果执行过程报错,可以在程序根目录下执行以下语句:exportLD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH或将libClassHook.so拷贝到/usr/lib目录中去。
支持操作系统:加密请在windows64位系统并安装了64位jdk环境下进行。
需要解密运行的程序支持LINUX(64位)和windows(64位)安装了JDK1.8以上的系统。
测试程序:(t_lib目录下的jar包为经过加密的jar包)java-agentlib:libClassHook-jartest.jar
1
最近有项目要做一个高性能网络服务器,去网络上搜到到的都是C++版本而且是英文或者简单的DEMO,所以自己动手写了C#的DEMO。
网络上只写接收到的数据,没有说怎么处理缓冲区数据,本DEMO简单的介绍如何处理接收到的数据。
简单易用,希望对大家有用.1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了IOCP的使用。
请参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1。
2、我的SocketAsyncEventArgsPool类使用List对象来存储对客户端来通信的SocketAsyncEventArgs对象,它相当于直接使用内核对象时的IoContext。
我这样设计比用堆栈来实现的好处理是,我可以在SocketAsyncEventArgsPool池中找到任何一个与服务器连接的客户,主动向它发信息。
而用堆栈来实现的话,要主动给客户发信息,则还要设计一个结构来存储已连接上服务器的客户。
3、对每一个客户端不管还发送还是接收,我使用同一个SocketAsyncEventArgs对象,对每一个客户端来说,通信是同步进行的,也就是说服务器高度保证同一个客户连接上要么在投递发送请求,并等待;
或者是在投递接收请求,等待中。
本例只做echo服务器,还未考虑由服务器主动向客户发送信息。
4、SocketAsyncEventArgs的UserToken被直接设定为被接受的客户端Socket。
5、没有使用BufferManager类,因为我在初始化时给每一个SocketAsyncEventArgsPool中的对象分配一个缓冲区,发送时使用Arrary.Copy来进行字符拷贝,不去改变缓冲区的位置,只改变使用的长度,因此在下次投递接收请求时恢复缓冲区长度就可以了!如果要主动给客户发信息的话,可以new一个SocketAsyncEventArgs对象,或者在初始化中建立几个来专门用于主动发送信息,因为这种需求一般是进行信息群发,建立一个对象可以用于很多次信息发送,总体来看,这种花销不大,还减去了字符拷贝和消耗。
6、测试结果:(在我的笔记本上时行的,我的本本是T420I78G内存)100客户100,000(十万次)不间断的发送接收数据(发送和接收之间没有Sleep,就一个一循环,不断的发送与接收)耗时3004.6325秒完成总共10,000,000一千万次访问平均每分完成199,691.6次发送与接收平均每秒完成3,328.2次发送与接收整个运行过程中,内存消耗在开始两三分种后就保持稳定不再增涨。
看了一下对每个客户端的延迟最多不超过2秒。
2023/8/10 0:44:45 64KB C# IOCP TCP 完成端口
1
sds-dust-sensors-arduino-library:NovaFitnessSDS灰尘传感器系列(SDS011,SDS021)的库
2023/8/1 0:43:58 16KB arduino esp8266 nodemcu sensor
1
RockosDB、Chrome的V8引擎依赖库,在部署区块链时所需要的依赖的一些库。
下载即添加系统LD_LIBRARY_PATH库可直接使用
2023/7/30 2:24:23 51.98MB 区块链
1
Cascading+Style+Sheet+2.0+Handbook+Rainer+DHTML+Library.chm
2023/7/26 11:30:22 553KB css
1
AdafruitGFXLibraryThisisthecoregraphicslibraryforallourdisplays,providingacommonsetofgraphicsprimitives(points,lines,circles,etc.).Itneedstobepairedwithahardware-specificlibraryforeachdisplaydevicewecarry(tohandlethelower-levelfunctions).Adafruitinveststimeandresourcesprovidingthisopensourcecode,pleasesupportAdafruitandopen-sourcehardwarebypurchasingproductsfromAdafruit!WrittenbyLimorFried/LadyadaforAdafruitIndustries.BSDlicense,checklicense.txtformoreinformation.Alltextabovemustbeincludedinanyredistribution.RecentArduinoIDEreleasesincludetheLibraryManagerforeasyinstallation.Otherwise,todownload,clicktheDOWNLOADZIPbutton,uncompressandrenametheuncompressedfolderAdafruit_GFX.ConfirmthattheAdafruit_GFXfoldercontainsAdafruit_GFX.cppandAdafruit_GFX.h.PlacetheAdafruit_GFXlibraryfolderyour/Libraries/folder.YoumayneedtocreatetheLibrariessubfolderifitsyourfirstlibrary.RestarttheIDE.
2023/7/25 17:02:52 284KB oled
1
Mathcad_Cival_Engineering_Library.Mathcad_Cival_Engineering_Library.
2023/7/12 13:06:38 13.64MB Mathcad_Cival_Engineering_Library
1
1图书管理系统包括,借阅,归还,续借,读者类别管理,读者管理,图书类别管理,图书管理,管理员权限管理,排行榜管理2本项目为JAVAWEB开发,数据库为mysql数据库文件,直接放到data文件夹下即可名为db_library(内含详细部署说明书)3论文按照国外软件工程HigherNationalGroupAwardGradedUnitSpecification格式编写目录如下ProjectDocumentHistory 2Introduction 41.1UsingthisDocument 41.2PurposeofDocument 51.3Background 5Planning: 52.1TermsofReference 52.2ProjectScope 62.3ProjectName 6AnalysisoftheProject 73.1FactFinding 73.2Findings 8RequirementSpecification 194.1Introduction 194.2TheProgramModel 194.3FunctionalRequirements 204.4Non-FunctionalRequirements 204.5UserInterface 21ManagementofProject 215.1ProjectLifeCycle 215.2ProjectPlan 215.2.5ThePlan 23Developing: 24Analysis 246.1SelectionofSoftware 246.2IdentificationofObjects(themainpart) 256.3ClassInitial 276.4ClassResponsibilities 276.5ClassAttributesandMethods(partofmainClass) 286.6Limitations 306.7BehaviouralandStructuralModels 31Design 367.1UserInterfaceandOutputs 367.2DataDictionary 377.3DataStructureDesign 387.4TestStrategy 41Implementation 428.1.CodeSolution 428.2.TestSolution 55Evaluation 609.1.ProductEvaluation 60AppendixA 64Progressreport1 64AppendixB 65Progressreport2 65AppendixC 65HigherNationalGroupAwardGradedUnitSpecification 65
2023/7/4 22:49:50 4.45MB 图书馆 管理系统 j2ee
1
图书馆该项目是使用版本11.1.4生成的。
开发服务器为开发服务器运行ngserve。
导航到http://localhost:4200/。
如果您更改任何源文件,该应用程序将自动重新加载。
代码脚手架运行nggeneratecomponentcomponent-name生成一个新的组件。
您还可以使用nggeneratedirective|pipe|service|class|guard|interface|enum|module。
建造运行ngbuild来构建项目。
构建工件将存储在dist/目录中。
使用--prod标志进行生产构建。
运行单元测试运行ngtest以通过执行单元测试。
运行端到端测试运行nge2e通过执行端到端测试。
进一步的帮助要获得有关AngularCLI的更多帮助,请使用nghelp或查看“页面。
2023/6/29 13:15:16 157KB HTML
1
3DModellib,Library,AD9集成库等等
2023/6/12 11:51:42 740.95MB AltumDesigner 库文件
1
共 130 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡