C#加载沙盒程序集
好吧,我有一个应用程序,我想为其他人提供支持,以编写该应用程序将加载的模块. 这些模块将是延长我的模块类的类,并编写为.NET.我需要知道如何将这些DLL加载到沙盒环境中,只允许它们在某些目录中读/写. 这是可能的吗? 解决方案 是的,这是可能的.使用代码访问安全性和.NET沙箱.我建议您看一下所以,看看这一点.一旦我找到了更多细节 的可能性,我将编辑我的答案,只是为了让您知道是可能的! 好的找到了.这是我几年前与CSScript的作者进行的讨论: 我: 我正在开发一个应用程序,并希望揭示用户通过UI脚本脚本脚本的能力. CSScript看起来非常好.但是,我也希望允许用户执行此操作并在Web服务器上执行他们的脚本.现在,这是一场安全噩梦,因为用户可以编写" directory.delete(@" c:\",true)"并擦除硬盘驱动器.因此 oleg: 直接有吸引力​​的解决方案是使用.NET沙箱.它是针对这种情况设计的.CLR标准沙箱可用
0 2024-04-12
编程技术问答社区
Ninject模块的意图是什么?
我是Ninject的完整新手 我一直在拉开其他人的代码,并找到了几个ninject模块的实例 - 从ninject.module.module派生的类,并具有包含大多数代码的加载方法. 这些类是通过调用standendkernel实例的LoadModule方法来调用这些类的方法,并将其传递给模块类的实例. 也许我在这里缺少一些明显的东西,但是仅仅创建普通的旧类并调用其方法,或者使用静态方法静态类是什么好处? 解决方案 NInject模块是用于在IOC容器中注册各种类型的工具.优点是这些模块随后将其保存在自己的课程中.这使您可以将不同的层/服务放在自己的模块中. // some method early in your app's life cycle public Kernel BuildKernel() { var modules = new INinjectModule[] { new LinqToSqlDataCon
0 2024-04-11
编程技术问答社区
什么是.NET中的模块?
到底是什么模块?模块,类和功能有什么区别?如何访问C#? 中的模块 我之所以问这个,是因为我想在运行时计算某些特定功能的IL代码的校验和. 解决方案 一个模块是一个逻辑集合中的代码集合.您可以在一个组件内有多个模块,并且每个模块都可以用不同的.NET语言编写(据我所知,VS不支持多模块组件的创建). 组件包含模块. 模块包含类. 类包含功能. 是的,您可以通过运行时反射访问组件,模块,类,功能,属性,字段等. 其他解决方案 作为其他答案的补充: MSDN指出:"一个模块是没有装配体现的Microsoft中间语言(MSIL)文件.". 模块可以通过使用汇编链接器(al.exe)实用程序生成装配清单来将模块"链接"在一起.如果我没记错的话,CLR可以为组件加载单个模块,以便仅加载Neccessary模块. 编辑:找到更好的描述 NetModules以及为什么要它们. 还有另一个问题在这里校验和主题.答案提到使用getilasbytear
0 2024-04-11
编程技术问答社区
c代码:防止有巨大模块的模块化操作中的溢出(模块接近溢出阀值)。
在我的C代码中,我必须执行一系列递归模块化操作.特别是我必须执行(a*b)modc,c〜2^126,而a,b原则上可能是很大的数字(从0到2^128-1)(我与128位unsigned __int128变量). 问题是如何在乘法过程中执行模块.我需要这个,因为如果在乘法后执行模块,则在乘法过程中我可能会超过2^128(如果A和B很大)并损坏连续的模块化操作. 因此,我想执行一次乘法,该乘法每次通过C(在乘法过程中)从0重新启动,而不是每次通过2^128-1. 我应该怎么做? 解决方案 幼稚的解决方案是将乘法实现为循环越过位,每次添加并添加.这样,您可以计算每个通过循环的中期结果的模量. 它需要128个班次,128个添加和128个Modulo操作.如果对您来说太慢了,那么一些Boffin可能会告诉您优化(但每个人都知道,只有一旦确定最简单的解决方案不够快,您才应该考虑优化).
2 2024-04-09
编程技术问答社区
如何在Linux内核模块中的用户空间创建一个目录
以下将在用户空间中创建文件,但是如何创建一个目录? struct file *filp = filp_open("/home/myuser/Desktop/newfile", O_CREAT, S_IRWXU); 解决方案 我知道如何使用的最佳方法: mkdir("your/directory", 0700); 大卫·赫弗南(David Heffernan)的评论显示了具体信息. 编辑: 此页面将向您显示您可以为目录提供的不同模式参数及其所做的. http://osdir.com/ml/linux. C编程/2002-06/msg00069.html 其他解决方案 只是设置O_DIRECTORY filp_open flags.
0 2024-04-09
编程技术问答社区
具有自旋锁冻结的Linux内核线程
我有两个内核线程,我试图以另一种方式从这两个线程中打印出来.我正在使用 spinlock 同步这两个线程. int kthread_1_function(void *data) { while(1) { spin_lock(&lock1); pr_alert("In Kernel Thread 1!!!\n"); spin_unlock(&lock2); if(kthread_should_stop()) { spin_unlock(&lock2); return 1; } } return 0; } int kthread_2_function(void *data) { while(1) { spin_lock(&lock2);
12 2024-04-09
编程技术问答社区
将V=s Flage传播到所有子makefile中。
每当我使用make构建内核模块时,我都会得到这种日志 CC[M] module1 CC[M] module2 CC[M] module3 CC[M] module4 即,仅汇编或链接有关当前正在处理的任何模块的信息. 我需要知道命令实际编译模块源代码的完整信息,这些命令中使用了什么. e.g gcc -Wall abcd.c 我什至通过设置V=s,V=1,-n和-d检查了一下,但无法得到我想要的. 请告诉我如何使V=s在后续的每个制作文件中传播.可以通过exporting来完成? 谢谢 解决方案 有两种方法: 您可以使用" make V=1"来构建模块以打印冗长的消息. 您也可以通过将" export KBUILD_VERBOSE=1"行放入您的makefile中来做到这一点. 这是makefile的示例: TARGET :=sysfs-sample export KBUILD_VERBOSE=1 obj-m +=
0 2024-04-09
编程技术问答社区
在C语言编程中,如何将两个头文件和3个C文件链接成一个可执行文件?
我被授予创建两个标题文件H1.H和H2.H;两个C文件A1.C和A2.C;和一个主文件MainFile.C. A1文件包括H1标头文件,A2包括H2标头文件,MainFile包括两个标头文件. 现在,我想将它们链接在一起以获取一个可执行的.exe文件. 我知道,如果只有两个C文件(A1.C和A2.C)存在1个标头文件(X.H),我们可以使用: gcc -c a1.c gcc -c a2.c gcc -o x_exe a1.o a2.o ./x_exe 谁能为我的问题提出相同格式的东西吗? 解决方案 一般而言,您将每个.c文件编译到.o文件中,然后将.O文件链接到可执行文件中. 因此,对于您的特定示例,您将按照以下方式编译源文件: gcc -c a1.c gcc -c a2.c gcc -c mainfile.c 和链接如下: gcc -o x_exe a1.o a2.o mainfile.o 除非它们在与源不同的目录中,否则您不必担心标题
0 2024-04-09
编程技术问答社区
一个java模块可以调用一个c模块吗?
只是出于兴趣,是否可以从Java模块调用C模块?如果是这样,该怎么做? 是的这样做: 其他解决方案 是的,您可以做到.您是否应该做到这是另一回事. 在Pro方面: 从Java调用C库将避免重新编码Java中的库(但请参见下文). 对于某些计算密集型算法,写得很好的C实现 May 比等效写得很好的Java版本更快. 无法在纯Java中实施某些操作系统的特定操作. 在骗局: 进行JNI调用与简单的Java方法调用. 如果您的C库不是线程安全,则必须非常谨慎地从Java打电话.通常,C库未考虑线程安全. 如果您的C库存在内存管理问题,它可能会破坏JAVA平台的稳定,从而导致JVM崩溃. 立即调用本机库意味着您的应用程序更难端口,并且需要更复杂的构建过程. 其他解决方案 是的,您使用Java本机接口( java java本地接口:程序员指南和规范 您也可以使用
0 2024-04-09
编程技术问答社区
从内核空间执行一个ioctl。
我正在编写一个需要在另一个设备上执行IOCTL的内核驱动程序.我意识到这不是处理代码的最佳方法,但这只是目前的临时解决方案.我从我的ioctl调用中恢复了错误代码-22(无效的参数),但我看不出参数可能是什么问题.这是代码的相关部分. #define GPIO74 "/dev/gpio/74" struct file* gpio74FD; . . . gpio74FD = filp_open(GPIO74,O_RDWR,0) . . . int device_ioctl(struct inode* inode,struct file *file, unsigned int ioctl_num,unsigned long ioctl_param) { . . . ret_val = gpio74FD->f_op->ioctl(inode, gpio74FD, GPIO_CONFIG_AS_INP, 0); //returns error code
0 2024-04-08
编程技术问答社区
Linux内核模块-IOCTL的使用返回ENOTTY
我在小内核模块上工作.我试图使用ioctl(在ioctl_add中),但是当我称其为单位时,我会在主机底部的开关中进行检查.代码在下面.有人知道我做错了什么? user.c: #include #include #include #include #include #include #include #include #include #include #include #include #define IOCTL_TYPE (100) #define IOCTL_ADD (_IO(IOCTL_TYPE, 1)) void cleanup() { if(f>=0) { clos
0 2024-04-08
编程技术问答社区
从CGI C模块返回http错误代码
我已经用C&编写了CGI模块,以解决某种条件,我想从此模块返回HTTP错误400.问题是 - 我不知道如何从模块返回HTTP错误. 看起来我的模块中的"返回(-1)",返回500个内部服务器错误.我尝试返回400等.但是静脉.我什至尝试过" printf("状态:400");在返回-1之前(如下所示:对此的任何建议将不胜感激. 编辑:[已解决]我能够从python模块返回HTTP错误代码(该C CGI模块稍后调用).因此,没有尝试下面的评论中提到的建议.不过,感谢您提供的帮助. 解决方案 要将HTTP错误400返回到HTTP客户端,您必须将HTTP状态行写入STDOUT,例如: printf("Status: 400 Bad Request\n"); ref: > 状态标头字段包含一个3位整数结果代码 指示脚本尝试处理的成功水平 请求. Status = "Status:" status-code SP reason-phra
0 2024-04-08
编程技术问答社区
在可加载的linux内核模块上设置cpu相关性
我需要创建一个内核模块,该模块可以在计算机中的每个核心上进行ARM PMU计数器.我很难设置CPU亲和力.我尝试了sched_get_affinity,但显然,它仅适用于用户空间过程.我的代码在下面.有什么想法吗? #define _GNU_SOURCE #include /* Needed by all modules */ #include /* Needed for KERN_INFO */ int init_module(void){ unsigned reg; /* enable user-mode access to the performance counters*/ asm volatile("MRC p15, 0, %0, C9, C14, 0\n\t" : "=r"(reg)); reg |= 1;
0 2024-04-08
编程技术问答社区
对内核模块代码进行单元测试是可行的吗?
如果是这样,我应该使用什么技术? 我正在考虑使用Hippomock,因为它们可用于模拟" C"方法.有更好的方法吗?如果是这样,任何人都可以给出建议,或者您认为内核的单位测试是过度的? 解决方案 由于Linux内核版本5.5 kunit 可用.这是一个轻量级的单元测试框架. 有关更多详细信息,请查看 doc/html/最新/dev-tools/kunit/index.html https://kunit.dev/ https://lwn.net/articles/780985/
0 2024-04-08
编程技术问答社区
简单的中断处理程序:request_irq返回错误代码|22
我正在编写一个简单的内核模块,该模块可以注册中断并处理它. 但是,当我尝试通过调用request_irq函数注册中断时, 它返回错误代码-22: 错误:无法请求IRQ 30 -CODE -22,EIO 5,EINVAL 22 我相信,此错误代码等于Einval(无效参数) 请告诉我,我做错了什么.这是一个模块: #include #include #include #include #include #include #include #include #include #include void int068_interrupt
4 2024-04-08
编程技术问答社区
如何在rmmod上停止Linux内核线程?
我编写了以下代码来创建内核线程: #include #include #include #include #include struct task_struct *task; int data; int ret; int thread_function(void *data) { int var; var = 10; return var; } static int kernel_init(void) { data = 20; printk(KERN_INFO"--------------------------------------------"); task = kthread_create(&thread_function,(void *)data,"pradeep")
0 2024-04-07
编程技术问答社区
如何理解这个dmesg错误信息?
我已经编写了这个简单的模块来处理设备,并调用其一些电源管理方法,例如.suspend和.resume.在初始化时,模块的简单查找特定设备并尝试调用其方法. #include #include #include #include static int __init mfps_driver_init(void){ struct pci_dev *dev = NULL; struct pci_driver *driver = NULL; struct device *device = NULL; dev = pci_get_device(0x8086, 0x15a2, NULL); if((dev == NULL) || (dev == 0)){ printk(KERN_INFO "LEONZO: NOTHIN
0 2024-04-07
编程技术问答社区
C-Linux-内核模块-TCP头
我正在尝试创建Linux内核模块,以检查传入数据包.目前,我正在提取数据包,读取源和目标端口的TCP标头 - >但是我得到的值不正确.我有钩功能: unsigned int hook_func(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { struct iphdr *ipp = (struct iphdr *)skb_network_header(skb); struct tcphdr *hdr; /* Using this to filter data from another machine
0 2024-04-07
编程技术问答社区
py-bcrypt在win7 64bit python上的安装
尝试在Win7上安装Py-Bcrypt. Python为64位.第一个错误无法找到vcvarsall.bat.谷歌搜索了一些我需要安装mingW的知识.现在安装了这个 C:\tools\python_modules\py-bcrypt-0.2>python setup.py build -c mingw32 running build running build_py running build_ext building 'bcrypt._bcrypt' extension C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\Python27\include -Ic:\Python27\PC -c bcrypt/bcrypt_python.c -o b d\temp.win-amd64-2.7\Release\bcrypt\bcrypt_python.o bcrypt/bcrypt_python.c:29:26: error:
0 2024-04-07
编程技术问答社区
我可以用模块代替Linux内核的功能吗?
我开始进行内核工作,以进行一些夏季研究.我们希望通过特定的RTT计算对TCP进行修改.我想做的是将tcp_input.c中一个函数之一的分辨率替换为动态加载的内核模块提供的函数.我认为这将改善我们可以开发和分发修改的步伐. 我感兴趣的功能被声明为静态,但是我用静态功能重新编译了内核,并由export_symbol导出.这意味着现在可以访问内核的其他模块/部分.我已经通过" cat/proc/kallsyms"对此进行了验证. 现在,我希望能够加载一个模块,该模块可以将符号地址从初始化的功能重写为动态加载函数.同样,当要卸载模块时,它将还原原始地址.这是一种可行的方法吗?你们都有建议如何更好地实施? 谢谢! 与 超级功能与Linux kernel 编辑: 这是我最终的方法. 给定以下功能(我想覆盖,并且不会导出): static void internal_function(void) { // do something interesting
0 2024-04-07
编程技术问答社区