小编use*_*296的帖子

如何阅读C中的导入目录表

我正在尝试用C++构建一个PE查看器,如果我尝试在Import Directory Table中输出库的名称,它似乎会崩溃.看来我没有得到程序使用的DLL的正确指针.

HANDLE handle = CreateFile("messagebox.exe",GENERIC_READ,0,0,OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,0);
DWORD size = GetFileSize(handle,NULL);
PVOID virtualpointer = VirtualAlloc(NULL,size,MEM_COMMIT,PAGE_READWRITE);
state = ReadFile(handle,virtualpointer,size,&byteread,NULL);
CloseHandle(handle);
PIMAGE_NT_HEADERS ntheaders = PIMAGE_NT_HEADERS(PCHAR(vpointer) + 
                                     PIMAGE_DOS_HEADER(vpointer)->e_lfanew);
handle = GetCurrentProcess();
DWORD EntryAddr = ntheaders->OptionalHeader.ImageBase + 
                       ntheaders->OptionalHeader.AddressOfEntryPoint;

DWORD importdir = 
       (DWORD) &(ntheaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT]);

DWORD va = (DWORD)(ntheaders->OptionalHeader.ImageBase) + 
                     ((PIMAGE_DATA_DIRECTORY)dwValueB)->VirtualAddress;
LPSTR libname[128];
int i =0;
while(((PIMAGE_IMPORT_DESCRIPTOR)dwValueC)->Name)
{
       // get DLL name
       libname[i] = (LPSTR)(nt->OptionalHeader.ImageBase + 
                         ((PIMAGE_IMPORT_DESCRIPTOR)dwValueC)->Name);
       i++;
}
Run Code Online (Sandbox Code Playgroud)

c++ directory import portable-executable

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

如何在NASM中推送64位int?

我正在尝试推送一个64位整数但是在组装NASM时似乎想把它看成是一个DWORD而不是QWORD.

我正在使用ASM来创建shellcode,我需要将64位DLL注入到64位进程中.第一个QWORD是旧指令指针,第二个是包含DLL地址的地址,第三个是LoadLibrary的地址.占位符在运行时填充.

section .text
global _start   

_start:
BITS 64
PUSH QWORD 0xACEACEACACEACEAC
PUSHFQ
push rax
PUSH QWORD 0xACEACEACACEACEAC
MOV RAX, 0xACEACEACACEACEAC
CALL RAX
pop RAX
POPFQ
RETN
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 nasm

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

如何对不同大小的整数数组列表进行排序?

我已经做了一些广泛的搜索,所以如果这是重复请宰我:D

我有一个字节数组列表(List),其中数组的长度各不相同.我需要按数组长度按升序排序列表,然后按数组中的字节排序(请参见示例).

例:

我想从:

{0,1,2}
{0,4}
{0,3,2}
{0,1,3}
{0,2,4,6,1}
{0,1,1}
{0,3,4,5}
Run Code Online (Sandbox Code Playgroud)

至:

{0,4}
{0,1,1}
{0,1,2}
{0,1,3}
{0,3,2}
{0,3,4,5}
{0,2,4,6,1}
Run Code Online (Sandbox Code Playgroud)

它基本上是字母顺序,但有一组数字而不是字符(可以说是同一个东西),任何想法?

c# arrays sorting

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

标签 统计

arrays ×1

assembly ×1

c# ×1

c++ ×1

directory ×1

import ×1

nasm ×1

portable-executable ×1

sorting ×1

x86-64 ×1