C++ fout tijdens compilen

Pagina: 1
Acties:
  • 610 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 15-09 22:47
Beste tweakers,
Ik was bezig met c++ met een injector programma maken, maar ik krijg op een vage reden fouten.

Ik kan zelf niet zien wat de fout is ik hoop dat iemand mij kan helpen, ik krijg de volgende fout:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1>------ Build started: Project: Kevin-Injector, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(22) : error C2664: 'errno_t mbstowcs_s(size_t *,wchar_t *,size_t,const char *,size_t)' : cannot convert parameter 2 from 'LPSTR' to 'wchar_t *'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(52) : error C2065: 'INVALID_HADLE_VALUE' : undeclared identifier
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(54) : error C2065: 'preProc' : undeclared identifier
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(54) : error C2228: left of '.dwSize' must have class/struct/union
1>        type is ''unknown-type''
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(64) : error C2061: syntax error : identifier 'dwPid'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(65) : error C2143: syntax error : missing ')' before '{'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(71) : error C2065: 'dwPid' : undeclared identifier
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(73) : error C2065: 'szDllPath' : undeclared identifier
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(75) : error C2065: 'szDllPath' : undeclared identifier
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(77) : error C3861: 'GetProcAdress': identifier not found
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2275: 'LPTHREAD_START_ROUTINE' : illegal use of this type as an expression
1>        f:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(305) : see declaration of 'LPTHREAD_START_ROUTINE'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : warning C4353: nonstandard extension used: constant 0 as function expression.  Use '__noop' function intrinsic instead
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2146: syntax error : missing ')' before identifier 'lpLoadLibrary'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2660: 'CreateRemoteThread' : function does not take 3 arguments
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2065: 'pRemoteMem' : undeclared identifier
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2143: syntax error : missing ';' before ')'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2143: syntax error : missing ';' before ')'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(78) : error C2059: syntax error : ')'
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(85) : error C2601: 'main' : local function definitions are illegal
1>        f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(65): this line contains a '{' which has not yet been matched
1>f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(110) : fatal error C1075: end of file found before the left brace '{' at 'f:\documents and settings\kevin\my documents\visual studio 2008\projects\kevin-injector\kevin-injector\main.cpp(65)' was matched
1>Build log was saved at "file://f:\Documents and Settings\Kevin\My Documents\Visual Studio 2008\Projects\Kevin-Injector\Kevin-Injector\Debug\BuildLog.htm"
1>Kevin-Injector - 19 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


En dit is mijn code

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
#include <direct.h>
#include <windows.h>
#include <tlhelp32.h>

using namespace std;

char* GetCurrentDir()
{
    char* szRet = (char*)malloc(MAX_PATH);
    _getcwd(szRet, MAX_PATH);

    return szRet;
}

LPCTSTR SzToLPCTSTR(char*szString)
{
    LPSTR lpszRet;
    size_t size = strlen(szString)+1;

    lpszRet = (LPTSTR)malloc(MAX_PATH);
    mbstowcs_s(NULL, lpszRet, size, szString, _TRUNCATE);

    return lpszRet;
}

void WaitForProccessToAppear(LPCTSTR lpcszProc, DWORD dwDelay)
{
    HANDLE          hSnap;
    PROCESSENTRY32  peProc;
    BOOL            bAppeared = FALSE;

    while(!bAppeared)
    {
        if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HANDLE_VALUE)
        {
            peProc.dwSize = sizeof(PROCESSENTRY32);
            if(Process32First(hSnap, &peProc))
                while(Process32Next(hSnap, &peProc) && !bAppeared)
                    if(!lstrcmp(lpcszProc, peProc.szExeFile))
                        bAppeared = TRUE;
        }
        CloseHandle(hSnap);
        Sleep(dwDelay);
    }
}
DWORD GetProcessIdByName(LPCTSTR lpcszProc)
{
    HANDLE          hSnap;
    PROCESSENTRY32  peProc;
    DWORD           dwRet = -1;
    if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HADLE_VALUE)
    {
        preProc.dwSize = sizeof(PROCESSENTRY32);
        if(Process32Next(hSnap, &peProc))
            if(!lstrcmp(lpcszProc, peProc.szExeFile))
                dwRet = peProc.th32ProcessID;
    }
    CloseHandle(hSnap);

    return dwRet;
}

BOOL(InjectDll(DWORD, dwPid, char* szDllPath)
{
    DWORD   dwMemSize;
    HANDLE  hProc;
    LPVOID  lpRemoteMem, lpLoadLibrary;
    BOOL    bRet    = false;

    if((hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_CREATE_THREAD, FALSE, dwPid)) != NULL)
    {
        dwMemSize = strlen(szDllPath)+1;
        if((lpRemoteMem = VirtualAllocEx(hProc, NULL, dwMemSize, MEM_COMMIT, PAGE_READWRITE)) != NULL)
            if(WriteProcessMemory(hProc, lpRemoteMem, (LPCVOID)szDllPath, dwMemSize, NULL))
            {
                lpLoadLibrary = GetProcAdress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
                if(CreateRemoteThread(hProc, NULL, 0 (LPTHREAD_START_ROUTINE)lpLoadLibrary, ;pRemoteMem, 0, NULL) != NULL)
                    bRet = TRUE;
            }
            return bRet;
    }

    int main()
    {
        char    szProc[MAX_PATH], szDll[MAX_PATH];
        char*   szDllPath = (char*)malloc(MAX_PATH);
        LPTSTR  lpszProc = NULL;

        for(;;)
        {
            cout < "Process: ";
            cin >> szProc;
            cout << "DLL: ";
            cin >> szDll;
            szDllPath = GetCurrentDir();
            strcat_s(szDllPath, MAX_PATH, "\\");
            strcat_s(szDllPath, MAX_PATH, szDll);
            cout << "Waiting for process...";
            WaitForProcessToAppear(szProc, 100);
            if(InjectDll(GetProcessIdByName(SzToLPCTSTR(szProc)), szDllPath))
                cout << "Injectie gelukt" << endl;
            else
                cout << "Injectie niet gelukt" << endl;
            cout << "\n";
        }
        
        return 0;
    }


Kunnen jullie mijn fout vinden? ik heb al 100x het script nagekeken maar ik zie niks fouts.

Alvast bedankt, met vriendelijke groet, Kevin.

[ Voor 0% gewijzigd door moto-moi op 05-08-2010 22:25 ]


Acties:
  • 0 Henk 'm!

  • Domdo
  • Registratie: Juni 2009
  • Laatst online: 30-06 20:29
Als het ik zo zie staat erop r:110/r:83 geen '}' en daar zou ik wel één verwachten.

[ Voor 3% gewijzigd door Domdo op 05-08-2010 22:26 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Heb je überhaupt wel een idee waar je mee bezig bent? Of heb je gewoon wat bij elkaar gecopy/paste van het internet? Want het staat vol met domme fouten die je echt wel zelf moet kunnen zien als je ook maar een beetje verstand hebt van C++.

Kijk bijvoorbeeld eens naar regels 64 en 84...

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Wat doet op regel 78 de puntkomma:
C++:
1
lpLoadLibrary, ;pRemoteMem

Verder klopt er geen hout van de accolades. Heb je ervaring met C++ of een andere taal? Dit zijn namelijk gewoon syntax-fouten... Nofi maar ik zou eerst oefenen met eenvoudigere code :)

Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 15-09 22:47
Nou ik heb ervaring met web programmering, en ik heb geoefend met c++ ja.

Ook hello word tutorials met variablen enzovoorts.

Ik zie inderdaad dat ik aardig wat typfouten gemaakt heb.
Ik heb het gevolgd net behulp van een tutorial, en ik wil het niet zomaar gaan afbreken, maar juist doorzetten.

Nog 18 fouten tegaan trouwens.. :|

Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 20-09 16:08

beany

Meeheheheheh

kevinkrs schreef op donderdag 05 augustus 2010 @ 22:43:
Nou ik heb ervaring met web programmering, en ik heb geoefend met c++ ja.

Ook hello word tutorials met variablen enzovoorts.

Ik zie inderdaad dat ik aardig wat typfouten gemaakt heb.
Ik heb het gevolgd net behulp van een tutorial, en ik wil het niet zomaar gaan afbreken, maar juist doorzetten.

Nog 18 fouten tegaan trouwens.. :|
Nou, de foutmeldingen zijn redelijk helder. Ga eens opzoek naar wat die meldingen betekenen. Want ik heb het vermoeden dat je dat nog niet gedaan hebt.

En die type fouten moet je er ook zo uit kunnen halen. Beetje raar om ons te vragen type fouten eruit te vissen...

Je wil doorzetten, doe dat dan ook... succes!! :)

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • VyperX
  • Registratie: Juni 2001
  • Laatst online: 14-08 13:04
code:
1
.../main.cpp(52) : error C2065: 'INVALID_HADLE_VALUE'


Misschien HANDLE ipv HADLE?

En inderdaad, gewoon de foutmeldingen af gaan.

[ Voor 20% gewijzigd door VyperX op 05-08-2010 22:48 ]

My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""


Acties:
  • 0 Henk 'm!

  • Tidob
  • Registratie: Augustus 2010
  • Laatst online: 22-09-2020
Het beste compileer je je project om zo vaak mogelijk, zodat je, als je een foutmelding krijgt, heel precies weet waar de fout vandaan komt. :) En je krijgt niet in 1x een half a4tje vol met fouten, waarna je een half uur bezig bent met fouten opsporen.

Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Kunnen jullie mijn fout vinden? ik heb al 100x het script nagekeken maar ik zie niks fouts.
Ik heb GEEN c++ ervaring, maar zie meteen dat je een InjectDll method maakt die 3 argumenten accepteert waarna je hem met maar 2 terug aanroept...(en dat los van de andere scheve zooi)

*edit* wtf, nee, geen 3 argumenten: Je bent er gewoon op duistere manier in geslaagd om daar een comma tussen DWORD en dwPid te zetten :X

[ Voor 24% gewijzigd door boe2 op 05-08-2010 23:03 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dit topic doet me een beetje denken aan die puzzels in de Donald Duck. "Oom Dagobert is een aantal oude munten kwijtgeraakt. Kun jij ze terugvinden?"

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Sorry, maar deze rotzooi (ik heb er geen beter woord voor) mag je toch echt zelf debuggen. Gebruik een fatsoenlijke editor die je een visuele rotschop geeft als je brackets mismatcht of dingen verkeerd nest. Of als je komma's op de verkeerde plek zet. Of als je functies met een verkeerd aantal argumenten aanroept. Of... Gewoon even leren programmeren lijkt me ook geen overbodige luxe. Minstens de helft van de compiler errors die je krijgt zijn sowieso met wat begrijpend lezen ook opgelost.

Programming FAQ - Debuggen: hoe doe ik dat?

Succes. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.