问题标签 [userland]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1507 浏览

linux - Linux用户态执行

我需要一个 C 库,它可以让我 exec() 一个静态链接的二进制文件,而无需调用execve()系统调用。系统调用不起作用的原因是二进制文件不可执行,并且不可能使其在该系统上可执行。对于动态链接/lib/ld-linux.so.2 progname的二进制文件,运行可以解决问题,但这会导致我的静态链接二进制文件出现段错误。

我在http://archive.cert.uni-stuttgart.de/bugtraq/2004/01/msg00002.html上找到了 ul_exec 1.1 ,但这似乎是我系统上自己的Hello, World二进制文件的段错误。

一种选择是制作二进制文件的副本,使副本可执行,然后调用execve()。我正在寻找不需要此类副本的解决方案(由于性能原因)。

0 投票
1 回答
670 浏览

debugging - 通过VMWare调试用户态程序(全反调试)

我目前正在尝试在Linux下反转一个具有一堆反调试技巧的程序。我能够击败其中一些人,但我仍在与其余的人战斗。可悲的是,因为我是平庸的,所以我花费的时间比预期的要多。无论如何,这些程序在 VM 中运行没有任何痛苦(我尝试使用 VMWare 和 VBox),所以我正在考虑跟踪它在 VM 中的执行,然后在调试器(gdb)下跟踪并区分它们以查看是这些变化更容易找出反调试技巧。
但是,我很久以前用 vmware 进行了一些内核调试,它或多或少都可以(我记得可以访问线性地址......),但我认为它有点不同。

您是否看到了调试此用户态程序而又不至于太痛苦的简单方法?

0 投票
2 回答
360 浏览

php - 有没有人在用户代码(非本机)中创建了一个类似 PHP 会话的类?

原生的 PHP Session 功能很棒,但它最终还是一个单例。有时您需要在已经启动的会话范围内(例如在应用程序框架中)维护多个应用程序的状态。从技术上讲,更改后可以停止/重新启动会话session_name(),但这在大多数应用程序中是不切实际的/不可能的/不安全的。如果一个应用程序使用非磁盘适配器存储会话数据,则使用共享session.save_path也不是一种选择。

没有理由不能在用户代码中完成本机会话中的功能,那么有人这样做了吗?

更新 1: CI_Session确实是一个包含一些有用代码的用户态实现,但它与 CodeIgniter 高度耦合。

更新 2:这是一个很棒的 AP​​I:

更新 3: 为 PHP5.3 编写了一个实现。

0 投票
1 回答
221 浏览

ios - Ios Jailbreak-这是怎么发生的?

我想知道黑客是如何创建越狱的。我知道用户空间利用和内核利用是什么意思。我知道当我有用户空间利用时,我需要找到内核利用。但我真的不知道“有效载荷”、“ROP”是什么意思, “ROP Payload”,“payload”。这个与用户空间和内核的互连如何利用?有人可以为此做“计划”吗?谢谢

0 投票
0 回答
781 浏览

c - 从 C 用户空间应用程序加载内核模块

我正在尝试使用 kmod 从 C 加载内核模块,但它根本不起作用。这是我所拥有的:

我得到了两个 printfs,所以 kmod 无法从路径创建模块,但为什么呢?

PS:我以root身份运行二进制文件,从与模块相同的目录。

0 投票
1 回答
373 浏览

usermode - 用户模式与用户空间

Userland只是说用户空间用户模式的另一种方式吗?

例如,我是否可以说:

Userland中有各种子系统。

代替:

用户模式中有各种子系统。

..这是一种有效的说法吗?

0 投票
3 回答
442 浏览

c - 实现用户级线程库 启动一个新线程 [作业]

我已经看到了这个:实现用户级线程包,它不适用。

在分配线程创建堆栈的 Thread_new(int func(void*)) 的实现过程中,如果我是正确的,我无法想出设置程序计数器 (%eip) 的方法,所以当线程由调度程序启动,它从给定函数的 (func) 入口点开始。

虽然我见过很多只使用 c(无汇编)的实现,但我们得到了以下代码(x86):

将 %edi 推入堆栈是否有特定原因?除了字节复制,我似乎找不到 esi/edi 的其他用途。

我意识到对 *%esi 的间接调用可能用于从新线程的上下文中调用函数,但除此之外,我似乎不明白 %esi 如何(或什么)指向一个有效函数从 Thread_new 调用 _thrstart 时的地址

笔记:

Thread_exit 是清理线程,在 c 中实现。

这是家庭作业

0 投票
1 回答
1213 浏览

c - 在用户空间中加载不可重定位的静态 ELF 二进制文件

我正在尝试编写一个基本的用户空间 ELF 加载器,它应该能够加载静态链接(非动态链接)的不可重定位二进制文​​件(即不是用 -pie、-fPIE 等构建的)。它现在应该可以在 x86 CPU 上运行。

我已经按照在用户空间中将 ELF 文件加载到 C 中的代码进行了操作,并且当可执行文件可重定位时它运行良好,但如果不是因为程序加载到错误的虚拟内存范围并立即崩溃,则正如预期的那样完全失败。

但是我尝试修改它以在它期望的虚拟偏移处加载程序(使用 phdr.p_vaddr)但我遇到了一个复杂的问题:我的加载器已经在使用那个虚拟内存范围!我不能映射它,更不用说往里面写任何东西了。如何继续,以便我可以将不可重定位的二进制文件加载到加载程序的地址空间中,而不会在加载程序完成之前覆盖它自己的代码?我是否需要让我的加载程序从完全不同的虚拟内存范围运行,也许是通过让链接器将其链接到高于不可重定位二进制文​​件的通常虚拟内存范围(在我的情况下恰好从 0x400000 开始)或有什么诀窍吗?

我已经阅读了 ELF 文档(顺便说一下,我在这里使用的是 ELF64,但我认为 ELF32 和 ELF64 非常相似)以及网络上的很多文档,但我仍然不明白。

有人能解释一下 ELF 加载器如何处理这种特殊的并发症吗?谢谢!

0 投票
1 回答
249 浏览

php - 在没有 root 权限的情况下运行较新的网络服务器

我想在 PHP 7 发布时使用它,但是我的服务器管理员拒绝升级到 PHP 5.3.3 并且我没有 root 权限。我可以在端口 1024 或更高的端口上运行网络服务器,但我需要它在端口 80 和 443 上可用。

我正在考虑通过PHP 中的本地 SOCKS 客户端连接到这个用户态网络服务器。我可以以这种方式在端口 80 和 443 上有效地运行 PHP 7 网络服务器,并且可以正确处理 PHP 请求和会话吗?

0 投票
1 回答
3806 浏览

linux - 是否可以使用 linux 内核运行 BSD 用户空间来替代 GNU coreutils?

我一直在寻找一个不适合嵌入式系统并且不使用许多流行发行版中的许多 GNU 实用程序的 linux 发行版。我想从用户空间开发一个使用 musl-libc、bsd 用户空间和 Plan 9 的(宠物项目)Linux 发行版。在我开始并可能浪费时间做不可能的事情之前,使用 BSD 用户空间作为 GNU coreutils 的替代品是否可行/实用?如果没有,有什么替代方案?