Базовая защита от несанкционированного доступа

Я пытаюсь создать базовую программу с защитой от несанкционированного доступа к функции licenseCheck, однако она всегда говорит, что она правильная, даже если я не использую всю функцию licenseCheck в Ollydbg или изменяю и перестраиваю код.

Я следую книге «Тайное программное обеспечение» и написал следующую программу:

#include "stdafx.h"
#define HASH 5131241

void BEGIN() {}

const std::string correctlicense("ABC");

bool licenseCheck() {

std::cout << "Enter license: ";

std::string license;
std::cin >> license;

volatile DWORD d;

// Fingerprint
__asm {
lea ebx, d
mov ebx, 0x050b072b
}

return license.compare(correctlicense) == 0;
}

UINT hash(UINT *beginAddress, UINT *endAddress) {

UINT h = *beginAddress;

for (; beginAddress <= endAddress; beginAddress++) {
h ^= *beginAddress;
}

return h;
}
void END() {}int main()
{

UINT uHash = hash((UINT*)BEGIN, (UINT*)END);

std::cout << "[Protection checks]" << std::endl;
std::cout << "Tampering: ";

if (uHash != HASH) {
std::cout << "Tampering detected! ( " << uHash << " )" << std::endl;
system("PAUSE");
return 0;
}
else {
std::cout << "Correct" << std::endl;
}

if (licenseCheck()) {
std::cout << "Correct!" << std::endl;
}
else {
std::cout << "Failed!" << std::endl;
}system("PAUSE");
return 0;
}

Программа в основном «хеширует» код между функцией BEGIN и функцией END, но, похоже, не работает. Хеш всегда корректен даже после взлома.

Я использую Windows 7 и Visual Studio 2017 для сборки / запуска программы.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]