folover
Исследователь
- Сообщения
- 34
- Реакции
- 2
C++:
#include <Windows.h>
#include "auth.hpp"
#include <string>
#include "skStr.h"
std::string tm_to_readable_time(tm ctx);
static std::time_t string_to_timet(std::string timestamp);
static std::tm timet_to_tm(time_t timestamp);
using namespace KeyAuth;
std::string name = ""; // application name. right above the blurred text aka the secret on the licenses tab among other tabs
std::string ownerid = ""; // ownerid, found in account settings. click your profile picture on top right of dashboard and then account settings.
std::string secret = ""; // app secret, the blurred text on licenses tab and other tabs
std::string version = "1.0"; // leave alone unless you've changed version on website
std::string url = "https://keyauth.win/api/1.2/"; // change if you're self-hosting
std::string key;
/*
Video on what ownerid and secret are https://youtu.be/uJ0Umy_C6Fg
Video on how to add KeyAuth to your own application https://youtu.be/GB4XW_TsHqA
Video to use Web Loader (control loader from customer panel) https://youtu.be/9-qgmsUUCK4
*/
api KeyAuthApp(name, ownerid, secret, version, url);
int main()
{
SetConsoleTitleA(skCrypt("Loader"));
std::cout << skCrypt("\n\n Connecting..");
KeyAuthApp.init();
std::cout << skCrypt("\n Enter license: ");
std::cin >> key;
KeyAuthApp.license(key);
if (!KeyAuthApp.data.success)
{
std::cout << skCrypt("\n Status: ") << KeyAuthApp.data.message;
Sleep(1500);
exit(0);
}
std::cout << skCrypt("\n\n App data:");
std::cout << skCrypt("\n Number of users: ") << KeyAuthApp.data.numUsers;
std::cout << skCrypt("\n Number of online users: ") << KeyAuthApp.data.numOnlineUsers;
std::cout << skCrypt("\n Number of keys: ") << KeyAuthApp.data.numKeys;
std::cout << skCrypt("\n Application Version: ") << KeyAuthApp.data.version;
std::cout << skCrypt("\n Customer panel link: ") << KeyAuthApp.data.customerPanelLink;
std::cout << skCrypt("\n Checking session validation status (remove this if causing your loader to be slow)");
KeyAuthApp.check();
std::cout << skCrypt("\n Current Session Validation Status: ") << KeyAuthApp.data.message;
std::cout << skCrypt("\n User data:");
std::cout << skCrypt("\n Username: ") << KeyAuthApp.data.username;
std::cout << skCrypt("\n IP address: ") << KeyAuthApp.data.ip;
std::cout << skCrypt("\n Hardware-Id: ") << KeyAuthApp.data.hwid;
std::cout << skCrypt("\n Create date: ") << tm_to_readable_time(timet_to_tm(string_to_timet(KeyAuthApp.data.createdate)));
std::cout << skCrypt("\n Last login: ") << tm_to_readable_time(timet_to_tm(string_to_timet(KeyAuthApp.data.lastlogin)));
std::cout << skCrypt("\n Subscription name(s): ");
std::string subs;
for (std::string value : KeyAuthApp.data.subscriptions)subs += value + " ";
std::cout << subs;
std::cout << skCrypt("\n Subscription expiry: ") << tm_to_readable_time(timet_to_tm(string_to_timet(KeyAuthApp.data.expiry)));
std::cout << skCrypt("\n Checking session validation status (remove this if causing your loader to be slow)");
KeyAuthApp.check();
std::cout << skCrypt("\n Current Session Validation Status: ") << KeyAuthApp.data.message;
std::cout << skCrypt("\n\n [1] License key only: ");
Sleep(10000);
exit(0);
}
BOOL WINAPI DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hModule);
CloseHandle(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)main, NULL, 0, NULL));
}
return TRUE;
}
std::string tm_to_readable_time(tm ctx) {
char buffer[80];
strftime(buffer, sizeof(buffer), "%a %m/%d/%y %H:%M:%S %Z", &ctx);
return std::string(buffer);
}
static std::time_t string_to_timet(std::string timestamp) {
auto cv = strtol(timestamp.c_str(), NULL, 10); // long
return (time_t)cv;
}
static std::tm timet_to_tm(time_t timestamp) {
std::tm context;
localtime_s(&context, ×tamp);
return context;
}
При инжекте в игру консоль запускается с ошибкой память не может быть read, если на выходе получить Example то всё работает нормально а вот с dll проблемы
Добавил вот такой код для старта main
BOOL WINAPI DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hModule);
CloseHandle(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)main, NULL, 0, NULL));
}
return TRUE;
}