用Roslyn在服务器端API上安全执行代码
为了使我的用户更具灵活性并让他们写自己的表达式,我想让他们能够在服务器端执行的文本字段中编写非常简单的C#语句以进行一些自定义计算. 我正在与罗斯林一起存档. 可以找到一个很好的例子,可以找到我让用户在评估功能中注入代码: string codeToCompile = @" using System; using System.Collections.Generic; namespace Evaluator { public class Evaluator { public string Eval() { " + {POTENTIALLY_DANGEROUS_CODE_GOES_HERE} + @"
4 2024-04-22
编程技术问答社区
在C#中建立一个动态查询(SQL注入攻击)。
我有以下代码 public DataSet GetProject(string projectID) { DataSet dataTable = new DataSet(); DataAccess dataAccess = new DataAccess(); OracleCommand commandOb = new OracleCommand(); strQuery.Append("select projectName, managerName"); strQuery.Append("from project "); strQuery.Append("where projectID = '" + projectID + "'"); cmd.CommandText = strQuery.ToString(); dataTable = dataAccess.ExecuteDataAdapter(commandOb); ret
10 2024-04-22
编程技术问答社区
代码中的Windsor Setter注入
我正在使用Windsor在.NET项目中进行IOC,但是在代码中进行Setter注入很难. 我相信这是我毯子注册我的组件的事实,因为我最终希望旧版项目完全符合IOC,并且大多是单位测试的(甜梦!). 这是我正在注册Daos的方式: container .Register(AllTypes.FromAssemblyNamed("MyApp.Business") .Where(Component.IsInNamespace("MyApp.Business.Dao")) .WithService.DefaultInterface()); 这是我使用daos注册组件的方式: container .Register(AllTypes.FromAssemblyNamed("MyApp.Business") .Where(Component.IsInNamespace("MyApp.MyComponentObject"))); 我
4 2024-04-21
编程技术问答社区
如何在运行时将一个文件注入EXE中,并在程序运行时引用该文件?
我希望用户从我的网站下载EXE,在该网站(同步下载时)将XML文件注入此应用程序.该XML文件包含一个公钥和签名. 如何在下载之前注入文件并在执行过程中引用该文件? 理想情况下,我不会使用shell注入文件,而是本机.NET API. 解决方案 您可以轻松地使用 mono.cecil ,您只需要写一些东西喜欢: var module = ModuleDefinition.ReadModule ("Application.exe"); module.Resources.Add ( new EmbeddedResource ( "signature.xml", ManifestResourceAttributes.Private, File.ReadAllBytes ("signature.xml"))); module.Write ("Application.exe", new WriterPa
4 2024-04-19
编程技术问答社区
用AppSettings.json和Startup.cs将服务引用注入到.NET中。
我的项目没有在运行时找到服务参考端点.我相信这是由于我的启动中的注射不正确.我是AppSettings.json和startup.cs配置方法的新手,但在startup.cs中成功地范围为我的类库和dbcontext. 请注意,如果它有所不同, 此VS解决方案包含类库和.NET/ANGULAR2 WEB项目.对服务的调用是从Angular网站启动到Web API的,该网站呼叫实际处理实际处理的类库中的方法. 服务参考" Cyber​​sourCetrxnProcessor"出现在我的类库项目中(请参阅图像),并且ItransactionProcessor已公开且可访问(即代码暗示完美工作). Web项目在解决方案资源管理器中没有服务参考. 当我添加参考时,将部分添加到app.config文件(请参见下文),然后将它们复制到Web项目中的Web.config. 如何在AppSettings和启动中'重新创建'web.config设置? 尝试处理测试付款时,这条
0 2024-04-18
编程技术问答社区
将一个托管的dll注入到一个本地进程中
我正在尝试将托管的C#DLL注入本机可执行文件.我正在将以下代码注入可执行文件中以加载Clr. 我知道注射有效,因为当我将代码注入cmd.exe时,它会正确输出.我知道 clrcreateinstance,pmetahost-> getruntime,pruntimeInfo-> getInterface all返回s_ok,但是 pclrrruntimehost-> start() 这仅在我将DLL注入远程过程中时才发生.如果我在自己的过程中加载DLL并从那里调用Main,则所有调用返回S_OK,托管代码运行正常. 更新:我尝试将代码注入Notepad.exe and Explorer.exe等其他过程.它在这些方面运行良好.我仍然很好奇为什么它不在cmd.exe中运行,但我只将其用于测试目的,所以它不再是问题了. getlastror返回"试图参考不存在的令牌" #include "stdafx.h" #include "Bootstrap.h" #incl
0 2024-04-16
编程技术问答社区
向所有没有自定义属性的方法和属性注入代码的最简单方法
aop http://en.wikipedia.org/wiki/.net_framework" rel =" nofollow">.net 在堆栈溢出上,经常提到后展出和其他第三方产品.因此,.NET和C#世界中似乎有很多AOP OPTON.但是每个都有其限制,在下载了有希望的sharp 之后,我在他们的文档中发现"方法必须是虚拟的",以便能够注入代码(编辑:请参阅Chriswue的答案,我评论 - 我想虚拟约束一定是在其中一个竞争者上).我还没有进一步调查此声明的准确性,但这是分类使我返回堆栈溢出的. 所以我想回答这个非常具体的问题: 我想注入简单" if(某个条件)console.writeline"样式代码代码(静态,密封,内部,虚拟,虚拟,非,非 - 虚拟,无关紧要)在我的项目中没有自定义注释,以便在运行时动态测试我的软件.此注入的代码不应保留在发行版本中,它只是用于开发过程中动态测试(与线程相关的). 最简单的方法是什么?我偶然发现了 mono.cecil
4 2024-04-15
编程技术问答社区
防止通过PublicKeyToken注入外部程序集
我正在使用以下代码: AppDomain.CurrentDomain.AssemblyLoad += (sender, args) => { var token = args.LoadedAssembly.GetName().GetPublicKeyToken(); if (!IsValidToken(token)) { Process.GetCurrentProcess().Kill(); } }; 其中IsValidToken()将加载的汇编的公共密钥令牌与我的应用程序中的字节数组中的授权公钥令牌列表进行了比较. 这是防止代码注入攻击的好安全措施吗?另外,鉴于我稍后将使用NetReactor混淆我的应用程序,这是否有必要?我正在尝试防止任何"窥探"进入我的应用程序,不仅来自史努比工具,而且来自任何外部不受欢迎的来源. 解决方案 仅乍一看,我要说"不,这是不够的". 原因: CreateRemoteT
4 2024-04-15
编程技术问答社区
AppDomain.CreateInstanceFromAndUnwrap-无法铸造透明代理
我正在编写.NET库将托管DLL注入外部流程.我目前的方法是: 使用CreateRemoteThread在不受管理的引导DLL上迫使目标过程调用LoadLibrary.从这一点开始,我们将在目标过程中执行代码. 我的引导程序dll然后在其上创建一个CLR的实例,并在其上调用ExecuteInDefaultAppDomain,该实例在托管的助手dll中执行方法. 此方法创建了一个新的应用程序,并调用AppDomain.CreateInstanceFromAndUnwrap将执行传递到我的有效载荷DLL中,将结果铸成IInjectionPayload. 这个想法是我的有效载荷dll公开了实现IInjectionPayload的类,因此助手DLL可以简单地调用payload.Run(). 我正在这样做,以便可以通过简单地调用AppDomain.Unload来完全卸载有效载荷代码(在发出信号以清理后). 此方法有效 - 我有效载荷DLL中的类正在实例化目标过程中,因此代码
4 2024-04-13
编程技术问答社区
使用C#的代码注入
您可以使用Windows钩子或其他方法使用C#进行代码注入?我已经看到很多有关代码注入的事情,但所有这些都在C/C ++中完成.我不知道这两种语言,并且很难翻译.有人对如何执行此操作有任何想法吗? 解决方案 凯文, 有可能的.您可以使用托管的C ++使用Window Hook Proc创建库.您需要做的就是使用标准Winapi(SetWindowShookex等)将此钩子注入某些应用程序.在此挂钩内部,您可以调用System :: AppDomain :: CurrentDomain->加载程序集中的加载方法中,将其加载到Target Application的AppDomain中.然后,您可以使用反射调用组装中定义的方法.例如,其他解决方案 Mike Stall具有该样本使用CreateMoteThread.它具有不需要任何C ++的优势. 其他解决方案 编辑:我似乎误解了这个问题....我的印象是,问题是关于当前过程中的代码注入. 我要晚些时候加入聚会,但是几周前我才
2 2024-04-12
编程技术问答社区
在C#编译器中修改Emded的字符串
我有一个问题,我需要能够进行编译的EXE(.NET 3.5 C#),我将副本进行分发,以便在发送EXE之前需要更改键. 我每次都需要新的EXE时都无法编译.这是一个稀薄的客户,将用作注册过程的一部分. 是否可以将条目添加到带有空白值的资源文件中,然后当请求进入时,另一个应用程序抓住空白默认薄端客户端,将其复制,用所需的数据填充空白值. 如果是如何?如果没有,您有任何想法吗?我已经挠头了几天,这是由于我需要工作的界限所致. 我的另一个想法是将值注入一种方法,我不知道该如何尝试. 谢谢. 解决方案 将组件转换为IL,进行文本搜索并替换,将IL重新编译为组件.使用 .net sdk 的标准工具. 其他解决方案 而不是将密钥嵌入汇编中,而是将其放入app.config文件(或应用程序传递的另一个文件)中,并防止您的应用程序在不存在且有效的情况下运行.为了保护它免受用户的修改,还可以添加RSA签名. 此代码可用于生成包含密钥的XML. pu
4 2024-04-11
编程技术问答社区
通过挂钩直接向另一个进程发送按键信息
我想知道,在解决了SendInput,SendKeys,Postmessage,SendMessage,SendNotifyMessage,KeyBD_Event等各种问题之后.为了找到好...试图将键盘输入发送到另一个非前景过程是非常挑剔和不可靠的. 我尝试了一种sendInput方法,我欺骗了z订单(以将当前窗口放在顶部),然后快速前景第三方窗口,发送输入,然后将我的窗口重新固定.其中最终失败了,并且不确定为什么,为什么还设法在我的窗户上也设法在我的窗口上也没有前景(引起两个窗口之间的无限发送和接收的循环,直到我设法关闭了该过程). 我尝试了sendmessage和posteSsage的不同组合.一个用于向上,一个用于向上和向上的情况会导致问题,例如两者的后邮政,导致钥匙在接收窗口上复制.或两者的sendmessage,这引起了文本输入问题,但其他功能正常.键盘和键后的SendMessage用于所有功能都起作用,但是可靠性率急剧下降,并将延迟添加到关键事件中.只有用于键盘的后
0 2024-04-11
编程技术问答社区
使用shellcode调用x86本地函数
我想将流量重定向到本地函数,然后使用ShellCode返回原始功能. 我定义了两个简单的功能,并使用objdump获取其汇编代码: // unsigned char *g_code = "\x55\x48\x89\xe5\xb8\x2a\x00\x00\x00\x5d\xc3"; int g() { return 42; } // unsigned char *f_code_original = "\x55\x48\x89\xe5\x48\x83\xec\x10\xb8\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x89\x45\xfc\xb8\x2a\x00\x00\x00\xc9\xc3"; int f() { int x = g(); return 42; } 在另一个文件中,我有一个函数,我想在F: 的两个指令之间调用该函数 void redirect() { FILE *out = fopen("re
6 2024-04-09
编程技术问答社区
C++代码注入使注入的应用程序崩溃
我试图将简单的可执行文件注入另一个可执行的可执行文件中,不幸的是,每当我将代码注入可执行文件中时,它都说" simple indight.exe.exe已经停止工作",然后关闭.我正在使用CreateRemoteThread注入代码.这是我到目前为止所做的. indector.exe //注入代码的文件 #include #include #define procId 2844 #define executable "executable.exe" // located in same directory int main() { HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, procId); LPVOID allocated = (LPVOID)VirtualAllocEx(hProc, NULL, strlen(executable), ME
2 2024-04-08
编程技术问答社区
两个进程之间共享内存 (C, Windows)
由于我还没有找到答案 to以前在这里问的问题我正在尝试其他方法. 有什么方法可以在两个过程之间共享内存? 第二个过程从注射中获取信息,因为它是一个不再支持的旧计划. 我的想法是在我传递给注入程序的结构中注入一些代码,将地址(或其他)传递给我需要运行的数据所在的共享内存.一旦获得数据,我将在注入的线程中填充自己的变量. 这可能吗? 如何? 代码表示赞赏. 编辑: 我认为这还不清楚,所以我会澄清的.我确实知道如何注入.我已经在做.这里的问题是将动态数据传递给注射. 解决方案 您可以尝试内存m-mapped文件. 这个细节. 其他解决方案 尽管Windows通过其但是,您可以使用 virtualAlloCex 和 .如果要使用 dopleicateHandle ,然后注入一个平台,该存根调用 mapviewoffilex 可以在另一个过程中建立共享内存映射.由于听起来您无论如何都要注入代码,因此应该对您有效. 要总结,您需要
8 2024-04-05
编程技术问答社区
使用Haskell将一个函数注入到一个Java .class文件中
我已经使用Haskell编写了Java字节码解析器,它效果很好.但是下一步让我完全陷入困境. 我的haskell程序需要修改.class文件,以便执行时,Java程序打印: " 在执行方法之前输入[方法名称] ", " 在执行方法后退出[方法名称] ". 我所知道的是,我们需要在System.out.println的电话中附加恒定的池和方法表,但我觉得我仍然缺少一些东西. 解决此问题的最佳方法是什么? 您如何知道如何在字节码中调用System.out.println? 如何用该方法的名称存储字符串,以后被称为System.out.println的参数? 解决方案 好吧,这就是各种字节代码工程库给您的. ASM,BCEL等.您的作业的细节是方面,而fectionj正是这样做的. 听起来像是作业是编写Haskell Byte代码工程练习,因此您需要自己修改类文件. @biziclop上面的建议是正确的.在课堂文件之前和之后执行一个,请注意三角洲
4 2024-04-05
编程技术问答社区
Java ASM字节码的修改-改变方法体
我有一种在一个罐子里的班级方法,我想用自己的身体进行交换.在这种情况下,我只想将方法打印到控制台上并返回true; 将方法打印出来; 我正在使用系统加载器加载JAR的类.我正在使用反射来使系统classloader能够通过字节码加载类.这部分似乎正常工作. 我遵循此处找到的方法替换示例:as.m.ow2.org/current/asm-transformations.pdf. 我的代码如下: public class Main { public static void main(String[] args) { URL[] url = new URL[1]; try { url[0] = new URL("file:////C://Users//emist//workspace//tmloader//bin//runtime//tmgames.jar");
4 2024-04-05
编程技术问答社区
C#: 向MSHTML实例注入CSS的最佳方法?
我正在尝试注入一些伴随其他HTML的CSS,将其介入C#管理的WebBrowser控件中.我正在尝试通过基础MSHTML(DomDocument属性)控件来执行此操作,因为此代码是完整IE8 BHO的原型. 问题是,虽然我可以注入html(通过mydomDocument.body.intertadjacenthtml)和javaScript(通过mydomDocument.parentwindow.execscript),但拒绝我的CSS代码. 如果我将包含HTML的字符串与注入后的目标页源插入的字符串,则MSHTML的源将实际上包含所有内容 元素及其基础源. CSS通过CSS 2.1的W3C验证.除了某些背景图像属性将图像直接嵌入CSS(例如background-image: url("data:image/png;base64 ...),并且评论这些行不会改变结果. 更奇怪(我不确定这是否相关),是我上周没有问题.我本周回到了它,在切换了一些在实际注入之
6 2024-04-03
编程技术问答社区
我可以将手动实例化与自动布线结合起来吗?
好的.我不确定如何问这个问题,这是我一定缺少某些东西的标志.我能做的最好的是:"有没有一种方法可以手动实例化对象并仍在该对象中使用注射?" 具体地,说我有: class A { public A(MyObject1 obj1, MyObject2 obj2, ..., MyObjectn objn) { ... } } 我想将所有这些对象连接到MyObjectn之外.据我所知,如果我在上面的构造函数的前面使用@Autow,那么我应该只在使用该类的实例的代码中实例化该对象: @Autowired A a; 这不允许我手动传递构造函数中的OBJN.有没有办法在使用该类实例的代码中手动初始化A的限制? 解决方案 简短答案 - 不. 您要么使用ioc,要么手动实例化对象. 我想到的一个解决方法: 创建一个服务,每个MyObject1为@Autowired 在此服务中创建一个方法: public A createA
6 2024-03-31
编程技术问答社区