HELP!freeze/lock an address[C++]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by stafed, 18 Jul 2010.

  1. stafed

    stafed New Member

    Joined:
    18 Jul 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Здравстуйте уважаемые эксперты! Подскажите, пожалуйста, как можно зафризить адресс(чтобы значение этого адреса не менялось) как это делает Artmoney и подобные ей программы? Пробовал использовать функцию VirtualProtectEx с атрибутом PAGE_READONLY, но приложение вылетает с ошибкой.Вот мой c++ код:
    Code:
        DWORD address = (0x011DED34);
        DWORD newpvalue = NULL;
        DWORD dwOldProt;
        float value = StrToFloat(Edit5->Text);
        ReadProcessMemory((HANDLE)proc,(LPCVOID) address, &newpvalue, 4 ,NULL);
        address = newpvalue + (0x9C);
        WriteProcessMemory((HANDLE)proc, (LPVOID) address, (LPVOID) &value,  sizeof(&value), NULL);
        VirtualProtectEx((HANDLE)proc, (LPVOID) address, sizeof(&value),  PAGE_READONLY, &dwOldProt);
    
    Может есть другой способ? Зарание благодарен за помощь.
     
  2. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    Артмани просто следит за величиной переменной и меняет её при необходимости:
     
  3. karabas

    karabas New Member

    Joined:
    17 Jul 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    хм тебе придется внедрить туда какое-то тело например dll которая поставит свой SEH и будет ловить ошибку
     
  4. stafed

    stafed New Member

    Joined:
    18 Jul 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Кто-нибуть может показать пример постоянного перезаписи значения, как в Artmoney? Я пробовал зациклить функцию WriteProcessMemory(), но моя программа виснет, хотя в том приложении, где постоянно перезаписывается значения работает нормально.
     
  5. karabas

    karabas New Member

    Joined:
    17 Jul 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Code:
    while(true)
    {
    ReadProcessMemory(....
    if changed 
    WriteProcessMemory(....
    Sleep(1) или Sleep(100)ж
    }
    
    но это все через жопу будет