标签: code-injection

Spy ++ for PowerBuilder应用程序

我正在尝试编写一个工具,让我检查基于PowerBuilder的应用程序的状态.我正在考虑的是像Spy ++(或者更好的,"Snoop",因为它存在于.NET应用程序中),它允许我检查一些基于PowerBuilder的GUI的对象树(和对象的属性).

我对普通(基于MFC)的应用程序以及.NET应用程序已经做了同样的事情,但不幸的是我自己从未在PowerBuilder中开发过应用程序,所以我现在通常会考虑两个问题:

  1. 是否有一些API(最好是Java或C/C++)可以让人们遍历PowerBuilder应用程序的可视对象树?我在PowerBuilder Native Interface系统上读了一下,但似乎这是用C/C++编写PowerBuilder扩展,然后可以用PowerBuilder脚本语言调用,对吧?

  2. 如果有一些可用的API - 也许PowerBuilder应用程序甚至会暴露某种支持IPC的API,它允许我检查PowerBuilder对象层次结构的状态而不在PowerBuilder应用程序的进程中?也许有可用的自动化界面,或基于COM的东西 - 或者其他东西?

现在,我的印象是可能需要将一个DLL注入到PowerBuilder应用程序的进程中,然后获得对正在运行的PowerBuilder VM的访问权限,以便我可以查询它以获取对象树.然后,某种IPC机制将允许我将此信息传输出PowerBuilder应用程序的进程.

有没有人有这方面的经验,或者可以说明是否有人试图这样做?

最好的祝福,

  • Frerich

powerbuilder introspection code-injection spy++

6
推荐指数
1
解决办法
1653
查看次数

提升使用mach_inject的权限

如何使用Authorization API将用户权限提升为root,以便可以使用mach_inject?

macos code-injection

6
推荐指数
1
解决办法
2058
查看次数

如何防止.NET中的XPath/XML注入

如何在.NET Framework中阻止XPATH注入?

我们以前使用字符串连接来构建XPATH语句,但发现最终用户可以执行一些任意的XPATH.例如:

string queryValue = "pages[@url='" + USER_INPUT_VALUE + "']";
node = doc.DocumentElement.SelectSingleNode(queryValue);
Run Code Online (Sandbox Code Playgroud)

从输入字符串中删除单引号和双引号是否足够?

或者,.NET框架是否支持参数化的XPATH查询?

.net xml xpath code-injection

6
推荐指数
1
解决办法
6904
查看次数

将托管DLL注入.net 4.0应用程序

我已经成功地使用bootloader dll(在c ++中)将托管DLL注入到.net 3.5应用程序中,然后在(c#)中将我的"payload"dll注入.

当我尝试这样做.net 4.0应用程序总是崩溃.

Bootloader C++:

    #include "MSCorEE.h"

    void StartTheDotNetRuntime()
    {
        // Bind to the CLR runtime..
        ICLRRuntimeHost *pClrHost = NULL;
        HRESULT hr = CorBindToRuntimeEx(
        NULL, L"wks", 0, CLSID_CLRRuntimeHost,
        IID_ICLRRuntimeHost, (PVOID*)&pClrHost);

        hr = pClrHost->Start();

        // Okay, the CLR is up and running in this (previously native) process.
        // Now call a method on our managed C# class library.
        DWORD dwRet = 0;
        hr = pClrHost->ExecuteInDefaultAppDomain(
             L"payload.dll",
             L"MyNamespace.MyClass", L"MyMethod", L"MyParameter", &dwRet);

        // Optionally stop the CLR runtime (we could …
Run Code Online (Sandbox Code Playgroud)

.net dll code-injection c#-4.0

6
推荐指数
1
解决办法
3032
查看次数

注入您的IoC容器?

我整个上午一直在研究寻找访问IoC的最佳实践.在将构造函数注入添加到类之后,您仍然需要从可能位于应用程序对象图深处的类中访问contianer.在我的情况下,我在WPF中做MVVM,我的一些View Models需要创建其他View Models,他们会使用容器来做到这一点.但问题是他们从何处获取容器.注入并传递它是否有意义?是否可以使其成为可注射的单身人士?供应单身人士的工厂更适合吗?

选项和权衡是什么?

更新

我发现Matt Hinze的这篇很棒的演讲涵盖了很多IoC理由:http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/04/08/inversion-of-control-in-action-by-matt- hinze-north.aspx

看起来一个答案是使用扫描功能并将IoC配置存储在每个程序集中的注册表中,然后在扫描期间将添加这些注册表配置.

还有其他方法需要考虑吗?特别是考虑到Matt演示了使用ServiceLocator模式,而Mark Seeman称之为反模式.请注意,Matt警告不要过度使用该模式,并且Mark对服务定位器的定义(http://blog.ploeh.dk/Trackback.aspx?guid=5f05c086-295b-41e5-a50a-ed0cd77ac4bd)似乎与Matt演示的不同.

dependencies inversion-of-control code-injection

6
推荐指数
1
解决办法
367
查看次数

使用代码洞穴注入64位DLL

我正在尝试将64位DLL注入64位进程(探测器).
我尝试过使用Remote-thread\Window Hooks技术,但是一些Anti-Viruses检测到我的加载器是误报.
阅读本文后:Darawk的Dll Injection,我决定使用代码洞穴.
它适用于32位,但因为VS不支持64位的内联汇编,所以我必须明确地编写操作码和操作数.
我看了这篇文章:64Bit注入使用代码洞穴,正如文章所述,存在一些差异:

这里必须包含几个不同之处:

  1. MASM64使用fastcall,因此函数的参数必须在寄存器中传递,而不是在堆栈中传递.
  2. 必须考虑地址的长度--32对64位.
  3. MASM64没有指令将所有寄存器压入堆栈(如32位的pushad),因此必须通过显式推送所有寄存器来完成.

我按照这些指导原则运行了文章的例子,但没有我做过的工作.
目标进程刚刚在我恢复主线程时崩溃,我不知道如何真正调查它因为ollydbg没有64位支持.

这是我注入之前代码的样子:

   codeToInject:  
000000013FACD000  push        7741933Ah  
000000013FACD005  pushfq  
000000013FACD006  push        rax  
000000013FACD007  push        rcx  
000000013FACD008  push        rdx  
000000013FACD009  push        rbx  
000000013FACD00A  push        rbp  
000000013FACD00B  push        rsi  
000000013FACD00C  push        rdi  
000000013FACD00D  push        r8  
000000013FACD00F  push        r9  
000000013FACD011  push        r10  
000000013FACD013  push        r11  
000000013FACD015  push        r12  
000000013FACD017  push        r13  
000000013FACD019  push        r14  
000000013FACD01B  push        r15  
000000013FACD01D  mov         rcx,2CA0000h  
000000013FACD027  mov         rax,76E36F80h  
000000013FACD031  call        rax  
000000013FACD033  pop …
Run Code Online (Sandbox Code Playgroud)

c++ security assembly masm code-injection

6
推荐指数
2
解决办法
2612
查看次数

使用Guice在RESTEasy中将主体注入资源方法

我正在使用带有Guice的RESTEasy开发REST API,目前我正在尝试使用类似于Dropwizard中的@Auth的注释来合并基本身份验证.同

@Path("hello")
public class HelloResource {
    @GET
    @Produces("application/json")
    public String hello(@Auth final Principal principal) {
        return principal.getUsername();
    }
}
Run Code Online (Sandbox Code Playgroud)

hello资源调用应该被一些使用Authorization HTTP请求头中传递的凭据执行基本身份验证的代码拦截,并且成功将主体注入方法主体参数.我还希望能够将允许的角色列表传递给注释,例如@Auth("admin").

我真的需要一些建议,以实现这一目标的方向?

java rest guice code-injection resteasy

6
推荐指数
1
解决办法
2475
查看次数

以编程方式从JSF托管bean中注入EJB bean

我有EJB无状态bean.
如何通过programmatic而不是@EJB注释将它注入JSF托管bean?

jsf ejb code-injection managed-bean

6
推荐指数
1
解决办法
1283
查看次数

为什么在使用PowerMockRunner运行时我不能使用@InjectMocks字段匹配?

我遇到了一个问题,其中Mockito @Mock注释的字段注入匹配@InjectMocks在有2个@Mock相同类型的情况下不起作用.我也使用了@Mock (name = "name_of_var")语法,但它仍然失败了......

这是测试中的类:

    import java.util.Date;
    public class Parent{

    private Date dateA;
    private Date dateB;

    public void setDateA(Date _dateA){
       dateA = _dateA;
    }

    public void setDateB(Date _dateB){
       dateB = _dateB;
    }

    public Date getDateA(){
       return dateA;
    }

    public Date getDateB(){
       return dateB;
    }
Run Code Online (Sandbox Code Playgroud)

这是测试本身:

    @RunWith(PowerMockRunner.class)
    @PrepareForTest({System.class, Parent.class})
    public class testParent{

    @Mock (name = "dateB")  private Date someOtherDate;
    @Mock (name = "dateA")  private Date someDate;    

    @InjectMocks Parent p;

    @Before
    public void setup(){ …
Run Code Online (Sandbox Code Playgroud)

java unit-testing code-injection mockito powermock

6
推荐指数
1
解决办法
7842
查看次数

编写页面故意易受命令注入攻击

我正在尝试编写一个故意容易受命令注入攻击的页面.这适用于培训环境.这是我到目前为止的代码:

public ActionResult CommandInjection()
    {
        string domain = Request.QueryString["domain"];
        ViewBag.Domain = domain;

        ProcessStartInfo psi = new ProcessStartInfo("nslookup.exe", domain)
        {
            UseShellExecute = false,
            CreateNoWindow = true,
            RedirectStandardOutput = true
        };

        var proc = Process.Start(psi);
        string result = proc.StandardOutput.ReadToEnd();

        ViewBag.Msg = "This page is vulnerable to Command Injection";
        ViewBag.Result = result;

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

当它看到正常的域查找请求时似乎运行良好.

但是,当它看到这样的请求时:

http://localhost:50159/Home/CommandInjection?domain=www.google.com+%26+dir 它返回一个空白.

我期待的是它会返回域查找结果,然后是dir命令输出.

c# asp.net-mvc code-injection

6
推荐指数
1
解决办法
101
查看次数