dll注入pvc修改阳光数


指针小应用

1
2
3
4
5
指针初始

int *pointer;
pointer是地址
* pointer对应的就是地址指向的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main() {
int a[] = { 0 };
/*for (int i = 0; i < 6; i++) {
a[i] = i;
printf("a[%d] = %d address = 0x%X \n\n", i, a[i], &a[i]);
}*/
// 定义指针,指向a(数组的首地址)
int *pointer = a;
printf("pointer = 0x%x\n\n", pointer);

// 指针方法:给数组中6个数据循环赋值,打印地址
for (int i = 0; i < 6; i++, pointer++) {
*pointer = i;
printf("a[%d]=%d address=0x%x\n\n", i,*pointer, pointer);
}
getchar();
return 0;
}

dll注入pvc修改阳光数量

dllmain入口点相关知识

1
2
3
(DWORD*)转换成DWORD类型的指针

* 在取出指针指向里面的值

基址为0x7578F8
2.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Windows.h>
void addsum() {
DWORD addr = *(DWORD*)0x7578F8;
DWORD addr1 = *(DWORD*)(addr + 0x868);
DWORD add2 = addr1 + 0x5578;
*(DWORD*)add2 = 1000;
}
BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hDll);
addsum();
MessageBoxA(0, "hack", "hack", 0);
}
return 1;
}

生成之前一定一定要修改
3.jpg

CE->查看内存->ctrl+i注入dll