帮忙解释下这个代码,最好懂VB的
void LLLL()
{
DWORD l;
//AllocConsole();
BYTE *p = (BYTE*)GetProcAddress(GetModuleHandle("yb_mem.dll"), "DiffieEncrypt");
VirtualProtect((void *)p, 0x200, PAGE_EXECUTE_READWRITE, &l);
*p = 0xe9;
*(DWORD *)(p + 1) = ((DWORD)dididi) - (DWORD)p - 5;
}
从这里看,是取得模块的函数基址是吧,然后再相应地方写入0xe9;这样的数值,因为我对C++完全不懂,看不出来P既然是获得的地址,怎么又能*p = 0xe9;按我理解这是个4字节的数字。
执行这里更看懂了。dididi全代码里还有一个,就是
int __stdcall dididi(void *src, int size, void *tgt, int size1)
{
memcpy(tgt, src, size);
return size;
}
但是执行这里没有传入参数。而且全部代码也找不到跟这些传入参数有关的。
大致意思应该是取得模块的函数基址,更新地址权限,然后在什么地方写入什么内容。
最重要的是告诉我在什么地方写了什么。另外VB怎么取函数基址,我取得的跟模块的基址完全一样。
(没分了我先問,回复我会加分的)