我正在编写一个显示所有已打开进程的线程列表的程序.
使用类似的程序(Process Explorer),我可以看到线程列表,其中包含一些信息,如线程ID,优先级,起始地址等.
我也能够检索所有这些信息,但Process Explorer显示起始地址如下:
ModuleName!ProcedureName+$1111
Run Code Online (Sandbox Code Playgroud)
如何在ProcedureName不注入dll的情况下使用GetProcAddress?
可能的重复:
将 C 数组声明移植到 Delphi
我正在将 C 代码转换为 Delphi,并且我想转换变量声明,但我真的不知道..你能帮忙吗?
char szImageName[BUFMAXLEN];
Run Code Online (Sandbox Code Playgroud)
谢谢。
我正在尝试将FOR循环从C转换为Delphi,但我有些疑惑:
我在C中知道这段代码:
for (i = 0; i < mb->size; i++)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
在Delphi中是这样的:
for i := 0 to mb.size do
begin
//...
end;
Run Code Online (Sandbox Code Playgroud)
但这个C代码怎么样:
for (i = 0; i < mb->size; i+= mb->data_size)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
可能会看德尔福?
?
Run Code Online (Sandbox Code Playgroud) 我正在编写一个进程查看器,它完成了99%,我只需要获取进程'线程的起始地址,但我不知道它是怎么做的.谁能帮我?:/ 谢谢
我正在将代码从C转换为Delphi,但我仍然停留在这段代码的最后一行:
BOOL is_match = FALSE;
unsigned int temp_val;
unsigned int prev_val = 0;
is_match = (temp_val == val);
Run Code Online (Sandbox Code Playgroud)
我只能转换这么多:
var
is_match: boolean;
temp_val: cardinal;
prev_val: cardinal;
begin
is_match := false;
prev_val := 0;
is_match := ????
end;
Run Code Online (Sandbox Code Playgroud)
我如何填写最后一个作业?
我正在使用内存扫描仪,但扫描速度很慢..任何人都可以帮我改进吗?
procedure FirstScan(scantype, scanvalue: string);
var
value :integer;
dwEndAddr : dword;
i:dword;
mbi : TMemoryBasicInformation;
begin
while (VirtualQuery(Pointer(DWORD(mbi.BaseAddress) + MBI.RegionSize), MBI, SizeOf(MEMORY_BASIC_INFORMATION))=SizeOf(TMemoryBasicInformation)) do begin
if (MBI.State = MEM_COMMIT) and (MBI.Protect = PAGE_READWRITE) then begin
dwEndAddr := DWORD(mbi.BaseAddress) + MBI.RegionSize;
for i := DWORD(MBI.BaseAddress) to (dwEndAddr - 1 - sizeof(DWORD)) do begin
Application.ProcessMessages;
try
if scantype = '1 Byte' then begin
value := PBYTE(i)^;
if scanvalue = IntToStr(value) then ListBox1.Items.Add(IntToHex(i,8));
end;
//others scantypes here...
except
Break;
end;
end;
end;
end;
end; …Run Code Online (Sandbox Code Playgroud) 使用此代码,我猜扫描更快,但扫描始终返回SAME地址.
例如:
00123456
00124567
00135478
00145893
00123456 //start repeat
00124567
00135478
00145893
00123456 //start repeat
00124567
00135478
00145893
Run Code Online (Sandbox Code Playgroud)
这是我的程序:
procedure SCANBYTE(value: integer);
var
lpflOldProtect: dword;
s: size_t;
mbi: MEMORY_BASIC_INFORMATION;
SI: SYSTEM_INFO;
lpStartAddress, lpStopAddress: dword;
addr: dword;
i: dword;
begin
GetSystemInfo(si);
lpStartAddress := dword(SI.lpMinimumApplicationAddress);
lpStopAddress := dword(SI.lpMaximumApplicationAddress);
for addr := lpStartAddress to lpStopAddress do begin
S:= VirtualQuery(Pointer(addr), MBI, SizeOf(MEMORY_BASIC_INFORMATION));
if (S=SizeOf(MEMORY_BASIC_INFORMATION)) and (MBI.State = MEM_COMMIT) and (MBI.Type_9 = MEM_PRIVATE) and (MBI.RegionSize>0) and (MBI.Protect = PAGE_READWRITE) then begin
for i := dword(MBI.BaseAddress) …Run Code Online (Sandbox Code Playgroud) 是否有可能发送键没有一个程序SendMessage和PostMessageAPI?
我正在尝试将C++项目转换为Delphi,但我不知道如何转换这两个类:
class CData;
class CContext;
class CData
{
public:
CContext* Data;
};
class CContext
{
public:
char Unk[2240];
DWORD data1;
DWORD data2;
DWORD data3;
};
Run Code Online (Sandbox Code Playgroud)
用法:
CData* Data = (CData*)(0x00112233);
//This code obtain the bytes in memory of the address "0x00112233" based on the sizes specified at CContext class
Run Code Online (Sandbox Code Playgroud)
如果有人知道,请帮助我.
谢谢.
我正在将一个开源应用程序从C转换为Delphi,但是我在转换这些行时遇到了问题:
#define IS_IN_SEARCH(mb, offset) (mb->searchmask[(offset)/8] & (1<<((offset)%8)))
#define REMOVE_FROM_SEARCH(mb, offset) mb->searchmask[(offset)/8] &= ~(1<<((offset)%8));
Run Code Online (Sandbox Code Playgroud)
我唯一想做的就是创建一个函数,但不知道其余的..
我不知道如何将其转换为Delphi.
谁能帮我?
谢谢
我有一个返回浮点值的函数,如下所示:
1.31584870815277
Run Code Online (Sandbox Code Playgroud)
我需要一个函数,它返回TRUE,比较值和点后面的两个数字.
例:
if 1.31584870815277 = 1.31 then ShowMessage('same');
Run Code Online (Sandbox Code Playgroud)
对不起我的英语不好.
有人能帮我吗?谢谢
可能重复:
将C"FOR"循环转换为Delphi
我正在尝试将C++ FOR循环转换为Delphi,但我不知道该怎么做...
这是C++函数:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask) return 0;
return (*szMask) == NULL;
}
Run Code Online (Sandbox Code Playgroud)
我刚刚转换了函数声明:
function bCOmpare( pData: PBYTE; bMask: PBYTE; szMask: PCHAR):boolean;
begin
//...
end;
Run Code Online (Sandbox Code Playgroud)
如何转换?
谢谢
我正在编写一个程序,从我的服务器下载文件(dll)并使用此文件.但是,当下载完成后,我的防病毒软件(卡巴斯基)会使用Constructor.Win32.Downldr.xr检测我的文件.我怎么解决这个问题?
但是,我将我的2个文件放在www.virustotal.com上,并且都没有病毒.
注意:这两个文件(进行下载的程序和文件,即dll)是在Delphi 7中创建的.