小编Unk*_*own的帖子

使用cout时发出奇怪的哔声

今天当我处理我的一些代码时,我在屏幕上打印缓冲区时发出了哔哔声.这是产生哔哔声的神秘人物:''我不知道你是否能看到它,但当我试图像这样打印时,我的电脑发出哔哔声:

cout<<(char)7<<endl;
Run Code Online (Sandbox Code Playgroud)

另一个值得关注的问题是,"嘟嘟"声不是来自我的车载蜂鸣器,而是来自我的耳机/扬声器

这只是我的电脑还是cout功能有问题?

编辑:

但那么为什么打印这个角色会产生哔哔声呢?这是否意味着我可以通过cout函数发送其他此类字符以产生不同的效果?

c++ cout beep

5
推荐指数
2
解决办法
4123
查看次数

如何访问用户模式内存?

我正在尝试读取notepad.exe的PEB目前我正在尝试通过注册ProcessCreation回调来访问PEB,然后等待直到创建notepad.exe.创建记事本时,我使用它的PID打开过程并使用ZwQuerryProcess(PROCESS_BASIC_INFORMATION)找到PEB.

但是,当我尝试读取INFORMATION-> PEB之外的异常时(我假设这是因为我无法访问内存)

当我第一次发现这个时,我记得有人提到了KeStackAttachProcess,它与访问另一个进程上下文中的地址相对应.

问题是我不知道如何检查上下文更改是否成功.一旦我被认为在另一个背景下,我仍然无法访问peb.有谁知道如何访问记事本的PEB?

这是我目前用于查找和访问PEB的代码:

假设hgtPid =记事本的PID

void ModuleDumperThread(){

NTSTATUS Status = STATUS_SUCCESS;
HANDLE hProcessHandle = NULL;
PLIST_ENTRY Next;
PLDR_DATA_TABLE_ENTRY LdrDataTableEntry;
CLIENT_ID clientID; 
ACCESS_MASK DesiredAccess = PROCESS_ALL_ACCESS;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE hProcessId = hgtPid;
PROCESS_BASIC_INFORMATION BasicInfoReal;
ULONG SizeReturned;

PEPROCESS ep;
KAPC_STATE *ka_state = NULL;


InitializeObjectAttributes (&ObjectAttributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);

   clientID.UniqueProcess = hProcessId;  
   clientID.UniqueThread = NULL; 

__try{


Status = ZwOpenProcess(&hProcessHandle, DesiredAccess, &ObjectAttributes, &clientID);

                if(Status != STATUS_SUCCESS){
                        DbgPrint("Failed to open process\n");
                        DbgPrint("NtStatus: 0x%x", Status);
                        return;
                }

            Status = gZwQueryprocess(hProcessHandle, ProcessBasicInformation, (PVOID)&BasicInfoReal, …
Run Code Online (Sandbox Code Playgroud)

c windows kernel wdk

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

寻找原始入口点

我希望能够通过查看 PE 标头找出出现在入口点的代码的来源。

比如这段代码就是我的程序的起始代码(401000h)

00401000 >/$ 58             POP EAX                                  ;  kernel32.76E93677
00401001  |. 2D 77360100    SUB EAX,13677
00401006  |. BB 4A184000    MOV EBX,<JMP.&kernel32.VirtualProtect>
Run Code Online (Sandbox Code Playgroud)

我想知道这段代码是从哪里来的。如何在不手动扫描我的文件的情况下找到它?(为了完成这个例子,这里有一个来自同一个文件的 hexdump,代码现在位于 200h)

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000200   58 2D 77 36 01 00 BB 4A  18 40 00 
Run Code Online (Sandbox Code Playgroud)

如何从虚拟入口点 (401000h) 到达原始入口点 (200h)?我当然尝试自己解决。但我错过了一些东西。一开始我是这么想的:

.text[ Entrypoint (1000h) - VirtualOffset (1000d) ] = 原始入口点,因为文件对齐 = 200,原始入口点位于我的 .text 部分的最开始,我想我可以将它用于所有可执行文件。

解决了,我在计算原始入口点时犯了愚蠢的错误

.text[ 入口点 - 虚拟偏移量 ] + 文件对齐 …

windows executable portable-executable

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

标签 统计

windows ×2

beep ×1

c ×1

c++ ×1

cout ×1

executable ×1

kernel ×1

portable-executable ×1

wdk ×1