标签: aslr

ASLR是否会因DLL注入而导致地址摩擦?

我正在阅读关于DLL注入技术的内容,我记住了这个问题.

让我们假设我们想要将一个DLL注入Windows 7中的目标进程,该进程为kernel32.dll启用了ASLR

因此,任何一段注入的代码都不能使用任何winapi或任何系统调用,因为地址让我们说在注入器代码中的loadLibrary函数将与目标进程中的地址loadLibrary不同,不是吗?

所以这样的召唤CreateRemoteThread不起作用:

CreateRemoteThread(hProcess,
                   NULL,
                   0,
                   (LPTHREAD_START_ROUTINE) ::GetProcAddress(hKernel32,
                                                             "LoadLibraryA" ),
                   pLibRemote,
                   0,
                   NULL );

::WaitForSingleObject( hThread, INFINITE );
Run Code Online (Sandbox Code Playgroud)

如果我在这个推理中错了,请纠正我.

dll winapi inject aslr createremotethread

3
推荐指数
1
解决办法
1627
查看次数

如何在 Windows PE 二进制文件中启用 ASLR?

如何启用可执行文件的地址空间布局随机化?

注意:我没有使用 Visual Studio 或任何提供/dynamicbase编译器选项的编译器。

出于本次讨论的目的,假设我正在向编译器添加功能以启用 ASLR。

其他 PE 标志

我已经知道如何设置其他 Windows 可执行映像选项。例如,然后IMAGE_FILE_NET_RUN_FROM_SWAP标记。您在 PE 二进制标头中设置 PE 选项:

LOADED_IMAGE li;
MapAndLoad(fileName), null, li, false, false)

LI.FileHeader.FileHeader.Characteristics |= IMAGE_FILE_NET_RUN_FROM_SWAP;

UnMapAndLoad(li)
Run Code Online (Sandbox Code Playgroud)

如何启用地址空间布局随机化?它是PE标志吗?它是组装清单条目吗?

奖金

我如何选择一个可执行文件进入 NX(不执行)?

aslr

3
推荐指数
1
解决办法
5272
查看次数

地址空间布局随机化和C中的结构

我有这个结构:

struct Books {
 char  title[50];
 char  author[50];
};
Run Code Online (Sandbox Code Playgroud)

让我说我知道如果我传递arg1给程序,在代码的某些部分,它会在方向上添加一些字符$title+52,因此author值被覆盖(缓冲区溢出).

现在我将ASLR添加到我的二进制文件中.通过这种方式,一些方向是随机的,所以我认为我之前描述的缓冲区溢出是不可能的.

这是真的?或者即使我添加ASLR,结构成员的方向也在一起,缓冲区溢出是可能的吗?

c memory struct buffer-overflow aslr

3
推荐指数
1
解决办法
255
查看次数

为什么ASLR似乎不起作用

我检查了ASLR是否启用如下,我认为它是:

[user@localhost test]$ cat /proc/sys/kernel/randomize_va_space
2
Run Code Online (Sandbox Code Playgroud)

我试过用以下程序测试它:

test.c:

#include <stdio.h>
int main(void)
{
    printf("%p\n", main);
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

如果ASLR处于活动状态,我希望每次运行都能使用不同的地址,对吧?但我每次都得到同样的东西.我测试了64位和32位可执行文件.我正在使用64位Arch Linux系统来测试这个:

[user@localhost test]$ gcc test.c -o test
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ ./test
0x4004c6
[user@localhost test]$ gcc -m32 test.c -o test
[user@localhost test]$ ./test
0x80483eb
[user@localhost test]$ ./test
0x80483eb
[user@localhost test]$ ./test
0x80483eb
[user@localhost test]$ ./test
0x80483eb
Run Code Online (Sandbox Code Playgroud)

如您所见,每次运行的地址都相同.这不是说ASLR关闭了吗?

c linux aslr

2
推荐指数
1
解决办法
603
查看次数

预编译头和ASLR有什么问题?

我在几个预编译头文件和地址空间布局随机化不兼容的网站上阅读它.是什么让他们不相容?修复它需要什么?

我的问题是操作系统独立我听说这是linux上的grsecurity和更新的Windows版本的问题.(而且我不知道ASLR还有什么.)

c c++ precompiled-headers aslr

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