Гайд Тру привязка по HWID внутри .dll

Забаненный
Статус
Оффлайн
Регистрация
8 Май 2017
Сообщения
228
Реакции[?]
114
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Изи привязка для вашего c+p.

Основной код (hwutils.cpp):

Код:
#include "stdafx.h"
#include "hwutils.h"
#include <iostream>
#include <urlmon.h>
#include <string>
#include <wininet.h>
#include <locale>
#include <windows.h>
#include "Cheat.h"
#include <sstream>
#pragma comment(lib, "wininet")
#pragma comment(lib,"wininet.lib")
#pragma comment(lib, "urlmon.lib")
using namespace std;
std::string ReadHWFile() {
std::ifstream ifs("C:\\h.txt");
std::string content((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>()));
return content;
}
// Функция которая узнает серийник ПК.
string serial() {
DWORD  lVolSerialNbr = 0;
char sHDSerial[255] = "";
GetVolumeInformation("C:\\", 0, 0, &lVolSerialNbr, 0, 0, 0, 0);
_ultoa(lVolSerialNbr, sHDSerial, 10);
std::string c(sHDSerial);
return c;
}
bool DoesHWIDMatch() { // Сама функция проверки, если проверка успешная выходит - true / не успешная - false
HINTERNET connect = InternetOpen("MyBrowser", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); // Создаем канал для подключения к сети
if (!connect) // проверка на успешность создания канала для подключения к сети
{
return false;
}
std::string URL = "http://beardhook.xyz/keys/" + serial() + ".ini"; // указываем в качестве ссылки для последующего открытия и чтения файла, адрес сайта + файл серийник.ini
LPCSTR Final = URL.c_str();
HINTERNET OpenAddress = InternetOpenUrl(connect, Final, NULL, INTERNET_DEFAULT_HTTPS_PORT, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0);
Sleep(10);
if (!OpenAddress) // Проверка на доступ к сайту, aka подключение к сети
{
InternetCloseHandle(connect);
return false;
MessageBox(NULL, "Ошибка:", "Нету подключения к интернете!", MB_OK);
}
char DataReceived[4096];
DWORD NumberOfBytesRead = 0;
while (InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead) {} // Читает файл и записывает данные в переменные
InternetCloseHandle(OpenAddress); // выключаем интерпутер
InternetCloseHandle(connect); // выключаем интерпутер
if (strstr(DataReceived, "HGF%R3")) // проверяем на нужный текст в файле, например HGF%R3
{
return true;
}
else
{
E::Misc->Panic(); // Здесь функция выгрузки вашего софта, в каждом своя. Тута для TGF.
static TCHAR path[MAX_PATH]; // создаем переменную под адресс
std::string serial1 = serial(); // создаем и приравниваем переменной серийник, для последующей записи
LPCSTR Final1 = serial1.c_str(); // Просто забиваем в ещё одну переменную серийник, даунский мув конечно.
std::string folder, file, serial; // создаем больше переменных, ибо чет мало было
file = std::string(path) + strenc("C:\\serialkey.ini"); // прописываем адресс для сохранения файла с серийником
WritePrivateProfileString(Final1, Final1, Final1, file.c_str()); // Записываем серийник в файл указанный строкой выше, дабы покупатель вашей пасты радовался.
MessageBox(NULL, "Подписка не обнаружена!", "Ошибка:", MB_OK); // Сообщение о отсуствии подписки.
}
return false;
}

hwutils.h:
Код:
#pragma once
extern bool DoesHWIDMatch();
stdafx.cpp
Код:
#include "stdafx.h"
stdafx.h
Код:
#pragma once
#include "targetver.h"
#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <sstream>
#include <string>
#include <psapi.h>
#include <time.h>
#include <process.h>
#include <vector>
#include <map>
#include <ostream>
#include <Shlobj.h>
#include <math.h>
#include <stdint.h>
#include <string>
#include <string.h>
#include <cmath>
#include <float.h>
#include <codecvt>
#include "targetver.h"
#include <atlbase.h>
#include <atlcom.h>
#include <sapi.h>
#include <algorithm>
#include <iterator>
#include <stdio.h>
#include <tchar.h>
targetver.h
Код:
#include <SDKDDKVer.h>

1) Устанавливаем адрес к будущим файлам, для этого просто вставляете ссылку на нужный каталог вашего сайта, где будут лежать файлы, которые софт будет проверять.
Код:
std::string URL = "http://beardhook.xyz/keys/" + serial() + ".ini";
Меняем "
Пожалуйста, авторизуйтесь для просмотра ссылки.
" на ваш каталог (создаем папку на хосте и вставляем адрес)
2) Меняем текст для проверки подлинности файла. Находим строку:
Код:
if (strstr(DataReceived, "HGF%R3"))
Меняем "HGF%R3" на ваш текст в файлах, например "123".
3) Находим строки на выход false:
Код:
file = std::string(path) + strenc("C:\\serialkey.ini");
- указываем свой адрес и название файла, куда будет сохранятся серийник, если лицензия не обнаружена.
Код:
E::Misc->Panic();
- вставляем функцию, которая срабатывает при нажатии кнопки паники/unhook, которая выгружает софт.
3) Далее активируем саму проверку на лицензию, вставляем проверка на DoesHWIDMatch() в функции которая загружает ваш софт или на открытие меню.
Код:
if (DoesHWIDMatch() == true)
{
// тут код загрузки самого софта после инжекта или код нажатия кнопки и открытия меню и т.п.
}
Так же в файл, где идет проверка подключите hwutils.h
Код:
#include "hwutils.h"
После запротектите .dll, дабы сайт и ключ проверки не украли. WELL PLAYD. Вы топ кодер, можно продавать софт с подпиской! Уху! Если проверка прошла неудачно серийник будет в файле на диске C, файл "серийник.ini" с текстом для проверки, который вы указали надо залить в каталог сайта, который опять же был указан вами. Profit. :seemsgood::seemsgood::seemsgood::seemsgood::seemsgood::seemsgood::seemsgood::seemsgood::seemsgood:
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Янв 2017
Сообщения
761
Реакции[?]
224
Поинты[?]
0
спиздил привязку у Костина рофланбулыга
какая разница спиздил или нет?! ТЕМЫ НЕ БЫЛО ДО ЭТОГО МОМЕНТА С привязкой!!!!!!!!!!
Ты хоть что то спизди откуда то, а то такие как ты только пиздеть и умеют.
 
Забаненный
Статус
Оффлайн
Регистрация
8 Май 2017
Сообщения
228
Реакции[?]
114
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
какая разница спиздил или нет?! ТЕМЫ НЕ БЫЛО ДО ЭТОГО МОМЕНТА С привязкой!!!!!!!!!!
Ты хоть что то спизди откуда то, а то такие как ты только пиздеть и умеют.
Как я понял, это троллин, ведь Костин это я. :roflanEbalo::roflanEbalo::roflanEbalo::roflanEbalo::roflanEbalo::roflanEbalo::roflanEbalo::LUL::LUL::LUL::LUL:
 
Забаненный
Статус
Оффлайн
Регистрация
4 Июн 2017
Сообщения
601
Реакции[?]
47
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как насчет сурса ? =)
 
Забаненный
Статус
Оффлайн
Регистрация
28 Май 2017
Сообщения
403
Реакции[?]
84
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А шо делать если нет анлоада в чите =)
 
Забаненный
Статус
Оффлайн
Регистрация
8 Май 2017
Сообщения
228
Реакции[?]
114
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А шо делать если нет анлоада в чите =)
Ничего, снеси строку. Она не важна, просто Unload выгружает софт и крашит КС, закрывая её без ошибок. Можно и без неё.
 
Забаненный
Статус
Оффлайн
Регистрация
28 Май 2017
Сообщения
403
Реакции[?]
84
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
8 Май 2017
Сообщения
228
Реакции[?]
114
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если её не будет он закроет кс?
Если её нету, кс не закроется, просто выдаст сообщение о том, что подписка не обнаружена. Просто строку эту удали с анхуком. В качестве закрытия юзай ту функцию, которая крашнет кс, напиши сам что-то, например взятие CurrectWeapon из рук (или аналог этой функции) без проверки на спавн. Будет краш.
 
😁
Олдфаг
Статус
Оффлайн
Регистрация
27 Ноя 2016
Сообщения
2,091
Реакции[?]
2,025
Поинты[?]
6K
В качестве закрытия юзай ту функцию, которая крашнет кс, напиши сам что-то, например взятие CurrectWeapon из рук (или аналог этой функции) без проверки на спавн. Будет краш.
pCoding.
 
AquaHook
Участник
Статус
Оффлайн
Регистрация
17 Мар 2017
Сообщения
713
Реакции[?]
263
Поинты[?]
0
Если её нету, кс не закроется, просто выдаст сообщение о том, что подписка не обнаружена. Просто строку эту удали с анхуком. В качестве закрытия юзай ту функцию, которая крашнет кс, напиши сам что-то, например взятие CurrectWeapon из рук (или аналог этой функции) без проверки на спавн. Будет краш.
Трукодер, тут это, ну ты понял(хелп)
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Забаненный
Статус
Оффлайн
Регистрация
8 Май 2017
Сообщения
228
Реакции[?]
114
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Трукодер, тут это, ну ты понял(хелп)
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

У меня макрос на перевод текста в const char*
Вроде на то на гитхабе лежит, линканул, либо юзай аналог, думаю в твоем софте он есть. А если его нет юзай:
XorStr.h
Код:
#pragma once
#include <string>
#include <array>
#include <cstdarg>
#define BEGIN_NAMESPACE( x ) namespace x {
#define END_NAMESPACE }
BEGIN_NAMESPACE(XorCompileTime)
constexpr auto time = __TIME__;
constexpr auto seed = static_cast< int >(time[7]) + static_cast< int >(time[6]) * 10 + static_cast< int >(time[4]) * 60 + static_cast< int >(time[3]) * 600 + static_cast< int >(time[1]) * 3600 + static_cast< int >(time[0]) * 36000;
template < int N >
struct RandomGenerator {
private:
static constexpr unsigned a = 16807; // 7^5
static constexpr unsigned m = 2147483647; // 2^31 - 1
static constexpr unsigned s = RandomGenerator< N - 1 >::value;
static constexpr unsigned lo = a * (s & 0xFFFF); // Multiply lower 16 bits by 16807
static constexpr unsigned hi = a * (s >> 16); // Multiply higher 16 bits by 16807
static constexpr unsigned lo2 = lo + ((hi & 0x7FFF) << 16); // Combine lower 15 bits of hi with lo's upper bits
static constexpr unsigned hi2 = hi >> 15; // Discard lower 15 bits of hi
static constexpr unsigned lo3 = lo2 + hi;
public:
static constexpr unsigned max = m;
static constexpr unsigned value = lo3 > m ? lo3 - m : lo3;
};
template <>
struct RandomGenerator< 0 > {
static constexpr unsigned value = seed;
};
template < int N, int M >
struct RandomInt {
static constexpr auto value = RandomGenerator< N + 1 >::value % M;
};
template < int N >
struct RandomChar {
static const char value = static_cast< char >(1 + RandomInt< N, 0x7F - 1 >::value);
};
template < size_t N, int K >
struct XorString {
private:
const char _key;
std::array< char, N + 1 > _encrypted;
constexpr char enc(char c) const {
return c ^ _key;
}
char dec(char c) const {
return c ^ _key;
}
public:
template < size_t... Is >
constexpr __forceinline XorString(const char* str, std::index_sequence< Is... >) : _key(RandomChar< K >::value), _encrypted{ enc(str[Is])... } {
}
__forceinline decltype(auto) decrypt(void)
{
for (size_t i = 0; i < N; ++i)
{
_encrypted[i] = dec(_encrypted[i]);
}
_encrypted[N] = '\0';
return _encrypted.data();
}
};
#define XorStr( s ) ( XorCompileTime::XorString< sizeof( s ) - 1, __COUNTER__ >( s, std::make_index_sequence< sizeof( s ) - 1>() ).decrypt() )
END_NAMESPACE
XorStr за место strenc. И подключи XorStr.h
 
AquaHook
Участник
Статус
Оффлайн
Регистрация
17 Мар 2017
Сообщения
713
Реакции[?]
263
Поинты[?]
0
Пожалуйста, авторизуйтесь для просмотра ссылки.

У меня макрос на перевод текста в const char*
Вроде на то на гитхабе лежит, линканул, либо юзай аналог, думаю в твоем софте он есть. А если его нет юзай:
XorStr.h
Код:
#pragma once
#include <string>
#include <array>
#include <cstdarg>
#define BEGIN_NAMESPACE( x ) namespace x {
#define END_NAMESPACE }
BEGIN_NAMESPACE(XorCompileTime)
constexpr auto time = __TIME__;
constexpr auto seed = static_cast< int >(time[7]) + static_cast< int >(time[6]) * 10 + static_cast< int >(time[4]) * 60 + static_cast< int >(time[3]) * 600 + static_cast< int >(time[1]) * 3600 + static_cast< int >(time[0]) * 36000;
template < int N >
struct RandomGenerator {
private:
static constexpr unsigned a = 16807; // 7^5
static constexpr unsigned m = 2147483647; // 2^31 - 1
static constexpr unsigned s = RandomGenerator< N - 1 >::value;
static constexpr unsigned lo = a * (s & 0xFFFF); // Multiply lower 16 bits by 16807
static constexpr unsigned hi = a * (s >> 16); // Multiply higher 16 bits by 16807
static constexpr unsigned lo2 = lo + ((hi & 0x7FFF) << 16); // Combine lower 15 bits of hi with lo's upper bits
static constexpr unsigned hi2 = hi >> 15; // Discard lower 15 bits of hi
static constexpr unsigned lo3 = lo2 + hi;
public:
static constexpr unsigned max = m;
static constexpr unsigned value = lo3 > m ? lo3 - m : lo3;
};
template <>
struct RandomGenerator< 0 > {
static constexpr unsigned value = seed;
};
template < int N, int M >
struct RandomInt {
static constexpr auto value = RandomGenerator< N + 1 >::value % M;
};
template < int N >
struct RandomChar {
static const char value = static_cast< char >(1 + RandomInt< N, 0x7F - 1 >::value);
};
template < size_t N, int K >
struct XorString {
private:
const char _key;
std::array< char, N + 1 > _encrypted;
constexpr char enc(char c) const {
return c ^ _key;
}
char dec(char c) const {
return c ^ _key;
}
public:
template < size_t... Is >
constexpr __forceinline XorString(const char* str, std::index_sequence< Is... >) : _key(RandomChar< K >::value), _encrypted{ enc(str[Is])... } {
}
__forceinline decltype(auto) decrypt(void)
{
for (size_t i = 0; i < N; ++i)
{
_encrypted[i] = dec(_encrypted[i]);
}
_encrypted[N] = '\0';
return _encrypted.data();
}
};
#define XorStr( s ) ( XorCompileTime::XorString< sizeof( s ) - 1, __COUNTER__ >( s, std::make_index_sequence< sizeof( s ) - 1>() ).decrypt() )
END_NAMESPACE
XorStr за место strenc. И подключи XorStr.h
Я так и сделал, заменил на XorStr, но решил отписать, ибо проверить на работоспособность сейчас не могу
 
Забаненный
Статус
Оффлайн
Регистрация
2 Июн 2017
Сообщения
191
Реакции[?]
56
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

У меня макрос на перевод текста в const char*
Вроде на то на гитхабе лежит, линканул, либо юзай аналог, думаю в твоем софте он есть. А если его нет юзай:
XorStr.h
Код:
#pragma once
#include <string>
#include <array>
#include <cstdarg>
#define BEGIN_NAMESPACE( x ) namespace x {
#define END_NAMESPACE }
BEGIN_NAMESPACE(XorCompileTime)
constexpr auto time = __TIME__;
constexpr auto seed = static_cast< int >(time[7]) + static_cast< int >(time[6]) * 10 + static_cast< int >(time[4]) * 60 + static_cast< int >(time[3]) * 600 + static_cast< int >(time[1]) * 3600 + static_cast< int >(time[0]) * 36000;
template < int N >
struct RandomGenerator {
private:
static constexpr unsigned a = 16807; // 7^5
static constexpr unsigned m = 2147483647; // 2^31 - 1
static constexpr unsigned s = RandomGenerator< N - 1 >::value;
static constexpr unsigned lo = a * (s & 0xFFFF); // Multiply lower 16 bits by 16807
static constexpr unsigned hi = a * (s >> 16); // Multiply higher 16 bits by 16807
static constexpr unsigned lo2 = lo + ((hi & 0x7FFF) << 16); // Combine lower 15 bits of hi with lo's upper bits
static constexpr unsigned hi2 = hi >> 15; // Discard lower 15 bits of hi
static constexpr unsigned lo3 = lo2 + hi;
public:
static constexpr unsigned max = m;
static constexpr unsigned value = lo3 > m ? lo3 - m : lo3;
};
template <>
struct RandomGenerator< 0 > {
static constexpr unsigned value = seed;
};
template < int N, int M >
struct RandomInt {
static constexpr auto value = RandomGenerator< N + 1 >::value % M;
};
template < int N >
struct RandomChar {
static const char value = static_cast< char >(1 + RandomInt< N, 0x7F - 1 >::value);
};
template < size_t N, int K >
struct XorString {
private:
const char _key;
std::array< char, N + 1 > _encrypted;
constexpr char enc(char c) const {
return c ^ _key;
}
char dec(char c) const {
return c ^ _key;
}
public:
template < size_t... Is >
constexpr __forceinline XorString(const char* str, std::index_sequence< Is... >) : _key(RandomChar< K >::value), _encrypted{ enc(str[Is])... } {
}
__forceinline decltype(auto) decrypt(void)
{
for (size_t i = 0; i < N; ++i)
{
_encrypted[i] = dec(_encrypted[i]);
}
_encrypted[N] = '\0';
return _encrypted.data();
}
};
#define XorStr( s ) ( XorCompileTime::XorString< sizeof( s ) - 1, __COUNTER__ >( s, std::make_index_sequence< sizeof( s ) - 1>() ).decrypt() )
END_NAMESPACE
XorStr за место strenc. И подключи XorStr.h
Скинь ВК свой, пожалуйста, нужна помощь
 
Забаненный
Статус
Оффлайн
Регистрация
8 Май 2017
Сообщения
228
Реакции[?]
114
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
midnight.im
Администратор
Статус
Оффлайн
Регистрация
1 Июл 2015
Сообщения
1,648
Реакции[?]
2,172
Поинты[?]
162K
А потом подменили хост и юзают твой софт на лт.
 
Сверху Снизу