• C++注入记事本升级版,给记事本弄爱心


      1 #include <iostream>;
      2 using namespace std;
      3 #include <windows.h>;
      4 #include <tlhelp32.h>;
      5 #include <tchar.h>;
      6 
      7 BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
      8 HWND GetMainWindow();
      9 void MyPostMessage(HWND hWnd);
     10 
     11 extern "C" BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
     12 {
     13     HWND hWnd;
     14     HWND hParWnd, hButWnd;
     15     int d, d1;
     16     switch (fdwReason)
     17     {
     18     case DLL_PROCESS_ATTACH:
     19 
     20         hWnd = GetMainWindow();
     21         if (hWnd)
     22             hWnd = ::FindWindowEx(hWnd, 0, TEXT("EDIT"), NULL);
     23         if (hWnd)
     24         {
     25             ::MessageBox(hWnd, TEXT("开始注入"), TEXT("提示"), MB_OK);
     26             MyPostMessage(hWnd);
     27         }
     28         else
     29         {
     30             ::MessageBox(hWnd, TEXT("记事本不存在"), TEXT("提示"), MB_OK);
     31         }
     32         break;
     33     case DLL_PROCESS_DETACH:
     34         // detach from process
     35         break;
     36 
     37     case DLL_THREAD_ATTACH:
     38         // attach to thread
     39         break;
     40 
     41     case DLL_THREAD_DETACH:
     42         // detach from thread
     43         break;
     44     }
     45     return TRUE; // succesful
     46 }
     47 
     48 BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
     49 {
     50     DWORD dwCurProcessId = *((DWORD*)lParam);
     51     DWORD dwProcessId = 0;
     52 
     53     GetWindowThreadProcessId(hwnd, &dwProcessId);
     54     if (dwProcessId == dwCurProcessId && GetParent(hwnd) == NULL)
     55     {
     56         *((HWND *)lParam) = hwnd;
     57         return FALSE;
     58     }
     59     return TRUE;
     60 }
     61 
     62 
     63 HWND GetMainWindow()
     64 {
     65     DWORD dwCurrentProcessId = GetCurrentProcessId();
     66     if (!EnumWindows(EnumWindowsProc, (LPARAM)&dwCurrentProcessId))
     67     {
     68         return (HWND)dwCurrentProcessId;
     69     }
     70     return NULL;
     71 }
     72 
     73 void MyPostMessage(HWND hWnd)
     74 {
     75     for (int i = 0; i < 25; i++) {
     76         PostMessageW(hWnd, WM_CHAR, L' ', 1);
     77     }
     78     PostMessageW(hWnd, WM_CHAR, L'.', 1);
     79     PostMessageW(hWnd, WM_CHAR, L',', 1);
     80     PostMessageW(hWnd, WM_CHAR, L']', 1);
     81     PostMessageW(hWnd, WM_CHAR, L']', 1);
     82     PostMessageW(hWnd, WM_CHAR, L'.', 1);
     83     for (int i = 0; i < 33; i++) {
     84         PostMessageW(hWnd, WM_CHAR, L' ', 1);
     85     }
     86     PostMessageW(hWnd, WM_CHAR, L',', 1);
     87     PostMessageW(hWnd, WM_CHAR, L'/', 1);
     88     for (int i = 0; i < 7; i++) {
     89         PostMessageW(hWnd, WM_CHAR, L'O', 1);
     90     }
     91     PostMessageW(hWnd, WM_CHAR, L'\', 1);
     92     PostMessageW(hWnd, WM_CHAR, L']', 1);
     93     PostMessageW(hWnd, WM_CHAR, L']', 1);
     94     PostMessageW(hWnd, WM_CHAR, L']', 1);
     95     PostMessageW(hWnd, WM_CHAR, L'.', 1);
     96     for (int i = 0; i < 17; i++) {
     97         PostMessageW(hWnd, WM_CHAR, L' ', 1);
     98     }
     99     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    100     for (int i = 0; i < 16; i++) {
    101         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    102     }
    103     PostMessageW(hWnd, WM_CHAR, L',', 1);
    104     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    105     for (int i = 0; i < 15; i++) {
    106         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    107     }
    108     PostMessageW(hWnd, WM_CHAR, L']', 1);
    109     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    110     for (int i = 0; i < 23; i++) {
    111         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    112     }
    113     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    114     PostMessageW(hWnd, WM_CHAR, L']', 1);
    115     for (int i = 0; i < 19; i++) {
    116         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    117     }
    118     PostMessageW(hWnd, WM_CHAR, L']', 1);
    119     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    120     for (int i = 0; i < 13; i++) {
    121         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    122     }
    123     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    124     for (int i = 0; i < 12; i++) {
    125         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    126     }
    127     PostMessageW(hWnd, WM_CHAR, L']', 1);
    128     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    129     for (int i = 0; i < 24; i++) {
    130         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    131     }
    132     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    133     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    134     for (int i = 0; i < 15; i++) {
    135         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    136     }
    137     PostMessageW(hWnd, WM_CHAR, L',', 1);
    138     for (int i = 0; i < 27; i++) {
    139         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    140     }
    141     PostMessageW(hWnd, WM_CHAR, L']', 1);
    142     for (int i = 0; i < 10; i++) {
    143         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    144     }
    145     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    146     for (int i = 0; i < 9; i++) {
    147         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    148     }
    149     PostMessageW(hWnd, WM_CHAR, L',', 1);
    150     for (int i = 0; i < 31; i++) {
    151         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    152     }
    153     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    154     for (int i = 0; i < 11; i++) {
    155         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    156     }
    157     PostMessageW(hWnd, WM_CHAR, L',', 1);
    158     for (int i = 0; i < 31; i++) {
    159         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    160     }
    161     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    162     for (int i = 0; i < 8; i++) {
    163         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    164     }
    165     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    166     for (int i = 0; i < 7; i++) {
    167         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    168     }
    169     PostMessageW(hWnd, WM_CHAR, L',', 1);
    170     for (int i = 0; i < 35; i++) {
    171         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    172     }
    173     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    174     for (int i = 0; i < 7; i++) {
    175         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    176     }
    177     PostMessageW(hWnd, WM_CHAR, L',', 1);
    178     for (int i = 0; i < 35; i++) {
    179         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    180     }
    181     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    182     for (int i = 0; i < 6; i++) {
    183         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    184     }
    185     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    186     for (int i = 0; i < 5; i++) {
    187         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    188     }
    189     PostMessageW(hWnd, WM_CHAR, L',', 1);
    190     for (int i = 0; i < 39; i++) {
    191         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    192     }
    193     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    194     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    195     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    196     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    197     PostMessageW(hWnd, WM_CHAR, L',', 1);
    198     for (int i = 0; i < 39; i++) {
    199         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    200     }
    201     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    202     for (int i = 0; i < 4; i++) {
    203         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    204     }
    205     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    206     for (int i = 0; i < 3; i++) {
    207         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    208     }
    209     PostMessageW(hWnd, WM_CHAR, L',', 1);
    210     for (int i = 0; i < 87; i++) {
    211         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    212     }
    213     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    214     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    215     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    216     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    217     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    218     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    219     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    220     for (int i = 0; i < 89; i++) {
    221         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    222     }
    223     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    224     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    225     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    226     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    227     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    228     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    229     for (int i = 0; i < 90; i++) {
    230         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    231     }
    232     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    233     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    234     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    235     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    236     for (int i = 0; i < 91; i++) {
    237         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    238     }
    239     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    240     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    241     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    242     for (int i = 0; i < 93; i++) {
    243         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    244     }
    245     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    246     for (int i = 0; i < 94; i++) {
    247         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    248     }
    249     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    250     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    251     for (int i = 0; i < 93; i++) {
    252         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    253     }
    254     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    255     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    256     for (int i = 0; i < 93; i++) {
    257         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    258     }
    259     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    260     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    261     for (int i = 0; i < 93; i++) {
    262         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    263     }
    264     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    265     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    266     for (int i = 0; i < 93; i++) {
    267         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    268     }
    269     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    270     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    271     for (int i = 0; i < 93; i++) {
    272         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    273     }
    274     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    275     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    276     PostMessageW(hWnd, WM_CHAR, L',', 1);
    277     for (int i = 0; i < 92; i++) {
    278         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    279     }
    280     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    281     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    282     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    283     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    284     for (int i = 0; i < 90; i++) {
    285         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    286     }
    287     PostMessageW(hWnd, WM_CHAR, L'^', 1);
    288     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    289     for (int i = 0; i < 3; i++) {
    290         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    291     }
    292     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    293     for (int i = 0; i < 88; i++) {
    294         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    295     }
    296     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    297     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    298     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    299     for (int i = 0; i < 4; i++) {
    300         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    301     }
    302     for (int i = 0; i < 88; i++) {
    303         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    304     }
    305     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    306     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    307     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    308     for (int i = 0; i < 4; i++) {
    309         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    310     }
    311     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    312     for (int i = 0; i < 86; i++) {
    313         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    314     }
    315     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    316     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    317     PostMessageW(hWnd, WM_CHAR, L' ', 1);
    318     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    319     for (int i = 0; i < 5; i++) {
    320         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    321     }
    322     PostMessageW(hWnd, WM_CHAR, L',', 1);
    323     for (int i = 0; i < 84; i++) {
    324         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    325     }
    326     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    327     for (int i = 0; i < 3; i++) {
    328         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    329     }
    330     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    331     for (int i = 0; i < 7; i++) {
    332         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    333     }
    334     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    335     for (int i = 0; i < 80; i++) {
    336         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    337     }
    338     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    339     for (int i = 0; i < 5; i++) {
    340         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    341     }
    342     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    343     for (int i = 0; i < 8; i++) {
    344         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    345     }
    346     PostMessageW(hWnd, WM_CHAR, L',', 1);
    347     for (int i = 0; i < 78; i++) {
    348         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    349     }
    350     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    351     for (int i = 0; i < 6; i++) {
    352         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    353     }
    354     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    355     for (int i = 0; i < 9; i++) {
    356         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    357     }
    358     PostMessageW(hWnd, WM_CHAR, L',', 1);
    359     for (int i = 0; i < 76; i++) {
    360         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    361     }
    362     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    363     for (int i = 0; i < 7; i++) {
    364         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    365     }
    366     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    367     for (int i = 0; i < 11; i++) {
    368         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    369     }
    370     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    371     for (int i = 0; i < 72; i++) {
    372         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    373     }
    374     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    375     for (int i = 0; i < 9; i++) {
    376         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    377     }
    378     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    379     for (int i = 0; i < 12; i++) {
    380         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    381     }
    382     PostMessageW(hWnd, WM_CHAR, L'=', 1);
    383     for (int i = 0; i < 70; i++) {
    384         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    385     }
    386     PostMessageW(hWnd, WM_CHAR, L'^', 1);
    387     for (int i = 0; i < 10; i++) {
    388         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    389     }
    390     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    391     for (int i = 0; i < 13; i++) {
    392         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    393     }
    394     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    395     for (int i = 0; i < 67; i++) {
    396         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    397     }
    398     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    399     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    400     for (int i = 0; i < 11; i++) {
    401         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    402     }
    403     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    404     for (int i = 0; i < 15; i++) {
    405         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    406     }
    407     PostMessageW(hWnd, WM_CHAR, L',', 1);
    408     for (int i = 0; i < 64; i++) {
    409         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    410     }
    411     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    412     for (int i = 0; i < 13; i++) {
    413         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    414     }
    415     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    416     for (int i = 0; i < 17; i++) {
    417         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    418     }
    419     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    420     for (int i = 0; i < 60; i++) {
    421         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    422     }
    423     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    424     for (int i = 0; i < 15; i++) {
    425         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    426     }
    427     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    428     for (int i = 0; i < 18; i++) {
    429         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    430     }
    431     PostMessageW(hWnd, WM_CHAR, L',', 1);
    432     for (int i = 0; i < 58; i++) {
    433         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    434     }
    435     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    436     for (int i = 0; i < 16; i++) {
    437         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    438     }
    439     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    440     for (int i = 0; i < 20; i++) {
    441         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    442     }
    443     PostMessageW(hWnd, WM_CHAR, L',', 1);
    444     for (int i = 0; i < 54; i++) {
    445         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    446     }
    447     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    448     for (int i = 0; i < 18; i++) {
    449         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    450     }
    451     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    452     for (int i = 0; i < 22; i++) {
    453         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    454     }
    455     PostMessageW(hWnd, WM_CHAR, L',', 1);
    456     for (int i = 0; i < 50; i++) {
    457         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    458     }
    459     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    460     for (int i = 0; i < 20; i++) {
    461         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    462     }
    463     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    464     for (int i = 0; i < 24; i++) {
    465         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    466     }
    467     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    468     for (int i = 0; i < 46; i++) {
    469         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    470     }
    471     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    472     for (int i = 0; i < 22; i++) {
    473         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    474     }
    475     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    476     for (int i = 0; i < 26; i++) {
    477         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    478     }
    479     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    480     for (int i = 0; i < 42; i++) {
    481         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    482     }
    483     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    484     for (int i = 0; i < 24; i++) {
    485         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    486     }
    487     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    488     for (int i = 0; i < 28; i++) {
    489         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    490     }
    491     PostMessageW(hWnd, WM_CHAR, L',', 1);
    492     for (int i = 0; i < 37; i++) {
    493         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    494     }
    495     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    496     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    497     for (int i = 0; i < 26; i++) {
    498         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    499     }
    500     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    501     for (int i = 0; i < 30; i++) {
    502         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    503     }
    504     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    505     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    506     for (int i = 0; i < 32; i++) {
    507         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    508     }
    509     PostMessageW(hWnd, WM_CHAR, L'[', 1);
    510     for (int i = 0; i < 29; i++) {
    511         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    512     }
    513     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    514     for (int i = 0; i < 33; i++) {
    515         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    516     }
    517     PostMessageW(hWnd, WM_CHAR, L',', 1);
    518     for (int i = 0; i < 27; i++) {
    519         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    520     }
    521     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    522     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    523     for (int i = 0; i < 31; i++) {
    524         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    525     }
    526     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    527     for (int i = 0; i < 36; i++) {
    528         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    529     }
    530     PostMessageW(hWnd, WM_CHAR, L',', 1);
    531     for (int i = 0; i < 22; i++) {
    532         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    533     }
    534     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    535     for (int i = 0; i < 34; i++) {
    536         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    537     }
    538     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    539     for (int i = 0; i < 39; i++) {
    540         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    541     }
    542     PostMessageW(hWnd, WM_CHAR, L',', 1);
    543     for (int i = 0; i < 16; i++) {
    544         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    545     }
    546     PostMessageW(hWnd, WM_CHAR, L'[', 1);
    547     for (int i = 0; i < 37; i++) {
    548         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    549     }
    550     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    551     for (int i = 0; i < 42; i++) {
    552         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    553     }
    554     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    555     for (int i = 0; i < 10; i++) {
    556         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    557     }
    558     PostMessageW(hWnd, WM_CHAR, L'/', 1);
    559     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    560     for (int i = 0; i < 39; i++) {
    561         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    562     }
    563     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    564     for (int i = 0; i < 44; i++) {
    565         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    566     }
    567     PostMessageW(hWnd, WM_CHAR, L',', 1);
    568     for (int i = 0; i < 6; i++) {
    569         PostMessageW(hWnd, WM_CHAR, L'O', 1);
    570     }
    571     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    572     for (int i = 0; i < 42; i++) {
    573         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    574     }
    575     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    576     for (int i = 0; i < 46; i++) {
    577         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    578     }
    579     PostMessageW(hWnd, WM_CHAR, L'.', 1);
    580     PostMessageW(hWnd, WM_CHAR, L'\', 1);
    581     PostMessageW(hWnd, WM_CHAR, L'O', 1);
    582     PostMessageW(hWnd, WM_CHAR, L'`', 1);
    583     for (int i = 0; i < 44; i++) {
    584         PostMessageW(hWnd, WM_CHAR, L' ', 1);
    585     }
    586     PostMessageW(hWnd, WM_CHAR, L'
    ', 1);
    587 }
    Dll文件
      1 #include <iostream>;
      2 using namespace std;
      3 #include <windows.h>;
      4 #include <tlhelp32.h>;
      5 #include <tchar.h>;
      6 
      7 HANDLE hThread = NULL;
      8 //进程名称查找进程ID
      9 DWORD ProcessFind(LPCTSTR Exename) //进程名称
     10 {
     11     HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
     12     if (!hProcess)
     13     {
     14         return FALSE;
     15     }
     16     PROCESSENTRY32 info;
     17     info.dwSize = sizeof(PROCESSENTRY32);
     18     if (!Process32First(hProcess, &info))
     19     {
     20         return FALSE;
     21     }
     22     while (TRUE)
     23     {
     24         cout << endl;
     25         if (_tcscmp(info.szExeFile, Exename) == 0)
     26         {
     27             return info.th32ProcessID;//返回进程的ID
     28         }
     29         if (!Process32Next(hProcess, &info))
     30         {
     31             return FALSE;
     32         }
     33     }
     34     return FALSE;
     35 
     36 }
     37 
     38 int dll_inject() {
     39     //Dll文件地址,改成你自己的地址
     40     const TCHAR *pLocDll = TEXT("F:\工作\项目\控制台\injection\injection\x64\Release\injectionDll.dll");
     41 
     42     HANDLE hThread = NULL;
     43 
     44     //记事本进程名称
     45     DWORD ProcessID = ProcessFind(TEXT("notepad.exe"));
     46     if (!ProcessID) {
     47         cout << "查找不到当前程序" << endl;
     48     }
     49     else {
     50         //获取进程ID
     51         HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcessID);
     52 
     53         //获取dll大小
     54         SIZE_T PathSize = (_tcslen(TEXT("injectionDll.dll")) + 1) * sizeof(TCHAR);
     55 
     56         //申请内存
     57         LPVOID StartAddress = VirtualAllocEx(hProcess, NULL, PathSize, MEM_COMMIT, PAGE_READWRITE);
     58 
     59         //写入内存
     60         bool bSuccess = WriteProcessMemory(hProcess, StartAddress, TEXT("injectionDll.dll"), PathSize, 0);
     61         if (!bSuccess)
     62         {
     63             cout << "写入失败" << endl;
     64         }
     65         else {
     66             //在寄主申请内存
     67             LPVOID strRmt = VirtualAllocEx(hProcess, nullptr, MAX_PATH, MEM_COMMIT, PAGE_READWRITE);
     68             //获得注入DLL大小
     69             size_t lenLocDll = 2 * _tcslen(pLocDll);
     70             //判断寄主申请内存是否成功
     71             if (strRmt) {
     72                 //把DLL写入寄主内存
     73                 BOOL ret = WriteProcessMemory(hProcess, strRmt, pLocDll, lenLocDll, nullptr);
     74                 //获得LoadLibraryW的函数地址以使用LoadLibrary函数
     75                 LPTHREAD_START_ROUTINE loadlib = LPTHREAD_START_ROUTINE(GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW"));
     76                 //注入
     77                 hThread = CreateRemoteThread(hProcess, nullptr, 0, loadlib, LPVOID(strRmt), 0, nullptr);
     78             }
     79             
     80             /*
     81             HANDLE hThread = CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "LoadLibrary"), StartAddress, 0, 0);*/
     82 
     83             if (hThread == NULL)
     84             {
     85                 cout << "在进程中注入失败:";
     86                 cout << GetLastError() << endl;
     87                 return -1;
     88             }
     89 
     90             WaitForSingleObject(hThread, INFINITE);
     91             //到这里已经完成dll的加载即注入了,通过dll函数执行我们要完成的任务
     92             //释放
     93             VirtualFreeEx(hProcess, StartAddress,0, MEM_RELEASE);
     94             CloseHandle(hThread);
     95             CloseHandle(hProcess);
     96         }
     97     }
     98 }
     99 int main()
    100 {
    101     dll_inject();
    102     system("pause");
    103 }
    主程序
  • 相关阅读:
    Nginx PHP页面找不到总是返回404
    Bing每日一图
    Vue3
    PHP PDO相关
    IIS 搭建FTP
    vue根据环境不同设置不同的入口文件
    Vue生成打包报告
    Vue项目在执行build命令期间中移除所有consol.log
    Nprogress 的使用
    Vue报错处理
  • 原文地址:https://www.cnblogs.com/weijunyu/p/10341211.html
Copyright © 2020-2023  润新知