[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. DiHWO

    DiHWO Member

    Joined:
    23 Oct 2009
    Messages:
    93
    Likes Received:
    10
    Reputations:
    0
    Как оправлять через c++ данные методом POST на сервер, есть что почитать? Базовые знания есть, создавал сервер который слушает порт, и клиент, который на порт который слушает сервер отправляет данные.
     
  2. qwert135

    qwert135 New Member

    Joined:
    22 Nov 2009
    Messages:
    53
    Likes Received:
    0
    Reputations:
    0
    Теперь мучает вторая часть вопроса.Как найти вторую производную?))
     
  3. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Всем привет.
    Кому не трудно, набросайте пожалуйста программку, которая
    Скопирует сама себя в папку C:\Windows
    Или дайте ссылку на мануалы по этим функциям :)
     
  4. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    qwert135
    Если не вдаваться в объяснения. то
    f''(x) = (f(x_left)-2f(x)+f(x_right))/(h^2)
    h = |x_left-x|=|x_right-x| = что-то оч. малое
    x_left-x<0;
    x_right-x>0;
    ---------------
    В общем тут всё понятно, так как вторая производная это производная первой производной...
     
  5. qwert135

    qwert135 New Member

    Joined:
    22 Nov 2009
    Messages:
    53
    Likes Received:
    0
    Reputations:
    0
    Irdis
    спасиб.А как можно проверить пустой файл или нет(файл текстовый, желательно пример)
     
    #5245 qwert135, 16 May 2010
    Last edited: 17 May 2010
  6. b82a

    b82a Elder - Старейшина

    Joined:
    7 Feb 2010
    Messages:
    150
    Likes Received:
    48
    Reputations:
    25
    Можно юзать file_stat

    Code:
    // read file status, print size, dates etc
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    int main()
    {
    struct stat file_stat;
    int         status;
    char filename[50]={0};
    printf("enter filename ? ");
    scanf("%s", filename);
    int fildes = open(filename, O_RDWR);             // open file
     
    // get file status for details see
    // http://www.opengroup.org/onlinepubs/007908799/xsh/fstat.html
    status = fstat(fildes, &file_stat);                 // get its status
     
    // print file status informations for details see
    //   http://www.opengroup.org/onlinepubs/007908799/xsh/sysstat.h.html
    printf("file %s size %d\n", filename, file_stat.st_size);        // print status
    printf("last access %s\n", ctime(&file_stat.st_atime));
    printf("last mofification %s\n", ctime(&file_stat.st_mtime));
    printf("last status change %s\n", ctime(&file_stat.st_ctime));
    return 0;
    }
    
     
  7. yaneblinchik

    yaneblinchik Member

    Joined:
    6 Feb 2010
    Messages:
    113
    Likes Received:
    19
    Reputations:
    0
    Это же на C?
     
  8. b82a

    b82a Elder - Старейшина

    Joined:
    7 Feb 2010
    Messages:
    150
    Likes Received:
    48
    Reputations:
    25
    А он указал конкретный язык?
     
  9. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Помогите выгрузить Dll

    Здравствуйте.
    У меня есть код инжекта DLL
    Code:
    #include <windows.h>
    #include <stdio.h>
    #include <tlhelp32.h>
    #include <shlwapi.h>
    #include <iostream>
    using namespace std;
    #pragma comment(lib, "shlwapi.lib")
    
    
    //I could just use PROCESS_ALL_ACCESS but it's always best to use the absolute bare minimum of priveleges, so that your code works in as
    //many circumstances as possible.
    #define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
     
    BOOL WriteProcessBYTES(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer,SIZE_T nSize);
     
    BOOL LoadDll(char *procName, char *dllName);
    BOOL InjectDLL(DWORD ProcessID, char *dllName);
    unsigned long GetTargetProcessIdFromProcname(char *procName);
     
    bool IsWindowsNT()
    {
       // check current version of Windows
       DWORD version = GetVersion();
       // parse return
       DWORD majorVersion = (DWORD)(LOBYTE(LOWORD(version)));
       DWORD minorVersion = (DWORD)(HIBYTE(LOWORD(version)));
       return (version < 0x80000000);
    }
     
    //int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    int main() {
    	cout << "Hello\n";
    	Sleep(2000);
    	while(1) {
    		cout << "\n---------------------------------------------\n";
    		char process[101], dllname[101];
    		cout << "Enter process name (example: hl.exe)\n";
    		cin.getline(process, 100);
    		cout << "Enter dll name (example: 1vs16.dll)\n";
    		cin.getline(dllname, 100);
    		cout << "Try inject...\n";
    		cout << "Process: " << process << " dll: " << dllname << endl;
    		if(IsWindowsNT()) LoadDll(process, dllname);
    		else cout << "Your system does not support this method";
    	}
        return 0;
    }
     
     
    BOOL LoadDll(char *procName, char *dllName)
    {
       DWORD ProcID = 0;
     
       ProcID = GetTargetProcessIdFromProcname(procName);
       cout << "Process ID: " << ProcID << endl;
     
       if(!(InjectDLL(ProcID, dllName))) cout << "Process located, but injection failed\n";
       else cout << "Successful!\n";
     
       return true;
    }
     
    BOOL InjectDLL(DWORD ProcessID, char *dllName)
    {
       HANDLE Proc;
       char buf[50]={0};
       LPVOID RemoteString, LoadLibAddy;
     
       if(!ProcessID)
          return false;
     
       Proc = OpenProcess(CREATE_THREAD_ACCESS, FALSE, ProcessID);
     
       if(!Proc)
       {
          sprintf(buf, "OpenProcess() failed: %d", GetLastError());
          cout << buf << endl;
          return false;
       }
     
       LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
     
       RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(dllName), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
       WriteProcessMemory(Proc, (LPVOID)RemoteString, dllName, strlen(dllName), NULL);
            CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, (LPVOID)RemoteString, NULL, NULL);   
     
       CloseHandle(Proc);
     
       return true;
    }
     
    unsigned long GetTargetProcessIdFromProcname(char *procName)
    {
       PROCESSENTRY32 pe;
       HANDLE thSnapshot;
       BOOL retval, ProcFound = false;
     
       thSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     
       if(thSnapshot == INVALID_HANDLE_VALUE)
       {
         cout << "Error: unable to create toolhelp snapshot\n";
          return false;
       }
     
       pe.dwSize = sizeof(PROCESSENTRY32);
     
       retval = Process32First(thSnapshot, &pe);
     
       while(retval)
       {
          if(StrStrI(pe.szExeFile, procName) )
          {
             ProcFound = true;
             break;
          }
     
          retval    = Process32Next(thSnapshot,&pe);
          pe.dwSize = sizeof(PROCESSENTRY32);
       } 
       return pe.th32ProcessID;
    }
    
    он работает.
    Вопрос - как выгрузить длл, загруженную таким образом, из процеса
     
    #5249 agrofyl2, 17 May 2010
    Last edited: 17 May 2010
  10. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    все тоже самое, только сменить функцию с LoadLibrary на FreeLibrary.
     
  11. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    В этой строчке?
    Code:
      LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
    LoadLibraryA-> FreeLibrartA ?

    Пробовал, не выгружается так.
     
  12. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    да, точно. функция требует хэндл библиотеки. ну вариантов два - либо через tool help функции обойти все модули в требуемом процессе и найти нужную, либо сделать сделать инъекцию кода который внутри того процесса выполнит GetModuleHandle, FreeLibrary
     
  13. olesy

    olesy New Member

    Joined:
    16 May 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    здрасти в ето строке
    Code:
    char** arr=malloc(sizeoff(char*)*count);
    выдает ерор cannot convert from void to char, как исправить ето?
     
  14. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Сделай приведение типа, например:

    char * var = (char*)malloc( size );
     
  15. olesy

    olesy New Member

    Joined:
    16 May 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0

    char ** var = char*malloc( size ); зделал так теперь ерор type char unexpected
     
  16. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    скобочки решил оптимизировать? если уж совсем ничего не знаешь - копируй как показали.
     
  17. olesy

    olesy New Member

    Joined:
    16 May 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    тогда идет вапше куча ероров

    size underclared identifier
    arr underclared identifier
     
    #5257 olesy, 17 May 2010
    Last edited: 17 May 2010
  18. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    To olesy:

    Ошибки говорят о том, что не определены arr и size, следовательно могу предположить что ты просто все скопировал не объявил необходимых переменных.

    Твой пример будет выглядеть примерно так:

    Code:
    char **arr = (char**)malloc( sizeof(char*) * count );
    Дабы не возник вопрос типа:

    Отвечу - необходимо заранее объявить переменную count.

    Например так:

    Code:
    int count = 10;
     
  19. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    olesy, ты все со своими заданиями мучаешься? Если в Visual Studio компилируешь, делай примерно так:

    PHP:
    #include "stdlib.h"
    #include "stdio.h"
    #include "string.h"

    int main()
    {
        
    int count 5;
        
    int good 0;
        
    int ijlennum 0;
        
        
    char** arr = (char**) malloc(sizeof(char*) * count);
        
        
    arr[0] = "string 1";
        
    arr[1] = "string 2";
        
    arr[2] = "string without numbers";
        
    arr[3] = "also, no numbers";
        
    arr[4] = "str 5";
        
        
    printf("Strings that do not contain any numbers:\n");
        
        for(
    i=0i<counti++)
        {
                
    good 1;
                
                for(
    j=0len strlen(arr[i]); lenj++)
                {
                        if(
    arr[i][j] >= 48 && arr[i][j] <= 57)
                        {
                                     
    good 0;
                                     break;
                        }
                }
                
                if(
    good)
                {
                        
    num++;
                        
    printf("\n%s"arr[i]);
                }
        }
        
        
    printf("\n\nTotal number: %u"num);
        
        
    free(arr);        
        return 
    0;   
    }
     
  20. olesy

    olesy New Member

    Joined:
    16 May 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    спасибо но я както хотел сам)
     
Thread Status:
Not open for further replies.