Hello there,
Decided to release a memory based ArmA 3 menu I don't use anymore.
Features:
Unlock Car
No Grass
Thermal Vision
Car God
No Fatigue
Night Vision
God Mode
Teleport
Speed Hack
Script Execution
Speed Hack is not working. Everything else needs offset update.
To execute your script you need to place your .sqf in ArmA3 directory and name it insanity.sqf. Hold left arrow, open your map and insert a marker.
Code:
// dllmain.cpp : Defines the entry point for the DLL application.
#include <windows.h>
#include "MD5.h"
#include <iostream>
#include <vector>
#include <tlhelp32.h>
#include <Psapi.h>
using namespace std;
bool Thermale = false;
bool GodModee = false;
bool Care = false;
bool NVe = false;
bool fate = false;
bool Carge = false;
bool grasse = false;
DWORD INSANITYBASE = (DWORD)GetModuleHandle("arma3.exe");
DWORD World = INSANITYBASE + 0x15FD338;
bool comp(BYTE* data, PBYTE byte, PCHAR mask) {
for (; *mask; ++mask, ++data, ++byte)
if (*mask == 'x' && *data != *byte)
return false;
return (*mask) == NULL;
}
DWORD SCAN(PBYTE byte, PCHAR mask) {
MEMORY_BASIC_INFORMATION mbi;
PCHAR addr = 0;
while (sizeof(mbi) == VirtualQuery(addr, &mbi, sizeof(mbi))) {
addr += mbi.RegionSize;
if (mbi.RegionSize < strlen(mask)) continue;
if (mbi.State != MEM_COMMIT) continue;
if (mbi.Type != MEM_PRIVATE) continue;
if (mbi.AllocationProtect != PAGE_READWRITE) continue;
if (mbi.Protect & (PAGE_GUARD | PAGE_NOCACHE | PAGE_NOACCESS)) continue;
mbi.RegionSize -= strlen(mask);
for (DWORD i = (DWORD)mbi.BaseAddress; i < (DWORD)mbi.BaseAddress + mbi.RegionSize; i++) {
if (comp((BYTE*)(i), byte, mask)) {
return(i);
}
}
}
return 0;
}
DWORD INSANITYMain(){
DWORD ADRESS = SCAN((PBYTE)"\x5B\x22\x6F\x6E\x4C\x6F\x61\x64\x22\x2C\x5F\x74\x68\x69\x73\x2C\x22\x52\x73\x63\x44\x69\x73\x70\x6C\x61\x79\x49\x6E\x73\x65\x72\x74\x4D\x61\x72\x6B\x65\x72\x22\x2C\x27\x47\x55\x49\x27\x5D\x20\x63\x61", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
DWORD ADRESS2 = SCAN((PBYTE)"\x5B\x22\x6F\x6E\x4C\x6F\x61\x64\x22\x2C\x5F\x74\x68\x69\x73\x2C\x22\x52\x73\x63\x44\x69\x73\x70\x6C\x61\x79\x49\x6E\x73\x65\x72\x74\x4D\x61\x72\x6B\x65\x72\x22\x2C\x27\x47\x55\x49\x27\x5D\x20\x63\x61", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
char NEWL[] = "[\"onLoad\",_this,\"RscDisplayInsertMarker\",'GUI'] call compile preprocessfilelinenumbers \"insanity.sqf\"";
char OLDL[] = "[\"onLoad\",_this,\"RscDisplayInsertMarker\",'GUI'] call (uinamespace getvariable 'BIS_fnc_initDisplay')";
AllocConsole();
freopen("CONOUT$", "w", stdout);
std::cout << "Insanity presents ArmA3" << std::endl;
std::cout << "Numpad 0 For BaseOffset" << std::endl;
std::cout << "NumPad 1 to Unlock Car (From Inside)" << std::endl;
std::cout << "NumPad 2 for No Grass On/Off" << std::endl;
std::cout << "NumPad 3 for Thermal Vison On/Off" << std::endl;
std::cout << "NumPad 4 for Car God Mode On/Off" << std::endl;
std::cout << "NumPad 5 for No Fatigue On/Off" << std::endl;
std::cout << "NumPad 6 for Night Vison On/Off" << std::endl;
std::cout << "NumPad 7 for God Mode On/Off" << std::endl;
std::cout << "NumPad 8 for Teleport To Cursor On Map (Watch Out For Infistar)" << std::endl;
std::cout << "NumPad 9 to Unlock Car" << std::endl;
std::cout << "Home Key for Speed Hack On/Off (Getting worked on)" << std::endl;
std::cout << "Left Arrow Key for Script Execution Of insanity.sqf" << std::endl;
std::cout << "| Instructions For Execution - Hold Left Arrow Down |" << std::endl;
std::cout << "| Than Go To The Map And Make A Map Marker Than Your Done|" << std::endl;
DWORD INSANITYBASE = (DWORD)(GetModuleHandle("arma3.exe"));
DWORD World = (DWORD)(INSANITYBASE + 0x15FD338);
while (1) {
if (GetAsyncKeyState(0x60)) {
printf("World: 0x%x \n", World);
Sleep(1000);
}
if (GetAsyncKeyState(0x61)) {
//so local player 1704 -> 0x4 + 0xBE8 int32 0
DWORD Car = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1704) + 0x4) + 0xB88);
//DWORD CarOpen = (*(DWORD*)(Car + 0x4) + 0xBE8);
*(INT32*)Car = 0;
printf("Unlocked From Inside\n");
Sleep(100);
}
if (GetAsyncKeyState(0x62)) {
grasse = !grasse;
Sleep(250);
if (!grasse) {
DWORD Grass = (*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1D24);
*(float*)Grass = 15.0f;
printf("No Grass Off\n");
}
if (grasse) {
printf("No Grass On\n");
}
}
if (grasse) {
DWORD Grass = (*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1D24);
*(float*)Grass = 50.0f;
}
if (GetAsyncKeyState(0x63)) {
Thermale = !Thermale;
Sleep(250);
if (!Thermale) {
printf("Thermal Off\n");
}
if (Thermale) {
printf("Thermal On\n");
}
}
if (Thermale) {
//world + local player0x170C + 0x4 + thermal offset0xD6C
DWORD wand = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x170C) + 0x4) + 0xCC1);
*(BYTE*)wand = 1;
}
if (GetAsyncKeyState(0x64)) {
Care = !Care;
Sleep(250);
if (!Care) {
//world + 0x14 +0x88 +0x4 +0x128 BYTE set to 1
DWORD CarGod = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x170C) + 0x4) + 0x128);
*(bool*)CarGod = 1;
printf("Car God Mode Off\n");
}
if (Care) {
DWORD CarGod = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x170C) + 0x4) + 0x128);
*(bool*)CarGod = 0;
printf("Car God Mode On\n");
}
}
if (GetAsyncKeyState(0x65)) {
fate = !fate;
Sleep(250);
if (!fate) {
printf("No Fatigue Off\n");
}
if (fate) {
printf("No Fatigue On\n");
}
}
if (fate) {
//world + 170C + 0x4 + 0xD54 FLOAT
DWORD FAT = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x170C) + 0x4) + 0xD04);
*(float*)FAT = 0.0f;
}
if (GetAsyncKeyState(0x66)) {
NVe = !NVe;
Sleep(250);
if (!NVe) {
DWORD nv = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x170C) + 0x4) + 0xCBE);
*(bool*)nv = 0;
printf("NV Off\n");
}
if (NVe) {
DWORD nv = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x170C) + 0x4) + 0xCBE);
*(bool*)nv = 1;
printf("NV On\n");
}
}
if (GetAsyncKeyState(0x67)) {
GodModee = !GodModee;
Sleep(250);
if (!GodModee) {
//kk so baze + 0x1704 + 0x4 + 0x128
DWORD Goder = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1704) + 0x4) + 0x128);
*(bool*)Goder = 1;
printf("God Mode Off\n");
}
if (GodModee) {
DWORD Goder = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1704) + 0x4) + 0x128);
*(bool*)Goder = 0;
printf("God Mode On\n");
}
}
if (GetAsyncKeyState(0x68)) {
//local player is: world + 1704 + 0x4 +0x68 x:0x28 y:0x2C z:0x30
//Map Cursor (ALSO NORMOL CURSOR TARGET) WORLD + 0x14 x:0x38 y:0x3C z:0x40
//local player
DWORD INSANITYISLIFEX = (*(DWORD*)(*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1704) + 0x4) + 0x68) + 0x28);
DWORD INSANITYISLIFEY = (*(DWORD*)(*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1704) + 0x4) + 0x68) + 0x2C);
DWORD INSANITYISLIFEZ = (*(DWORD*)(*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x1704) + 0x4) + 0x68) + 0x30);
//Cursor Target
DWORD PORNX = (*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x14) + 0x38);
DWORD PORNXX = (*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x14) + 0x3C);
DWORD PORNXXX = (*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x14) + 0x40);
*(float*)INSANITYISLIFEX = *(float*)PORNX;
*(float*)INSANITYISLIFEY = *(float*)PORNXX;
*(float*)INSANITYISLIFEZ = *(float*)PORNXXX;
printf("Teleported\n");
Sleep(100);
}
if (GetAsyncKeyState(0x69)) {
//0x14 -> 0x88 -> 0x4 -> 0xBE8
DWORD Unlock = (*(DWORD*)(*(DWORD*)(*(DWORD*)(INSANITYBASE + 0x15FD338) + 0x94) + 0x4) + 0xB88);
*(INT32*)Unlock = 0;
printf("Unlocked\n");
Sleep(100);
}
if (GetAsyncKeyState(0x25)) {
memcpy((LPVOID)ADRESS, &NEWL, sizeof(NEWL));
Sleep(2);
memcpy((LPVOID)ADRESS2, &OLDL, sizeof(OLDL));
//DWORD addre = sizeof oldstr;
}
Sleep(2);
}
return 0;
}
bool WINAPI DllMain(HINSTANCE hInst, DWORD dRes, LPVOID lRes)
{
if (dRes == DLL_PROCESS_ATTACH) {
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)&INSANITYMain, NULL, NULL, NULL);
}
return true;
}
To change the script name (in case of directory scan), change insanity in this line:
Code:
char NEWL[] = "[\"onLoad\",_this,\"RscDisplayInsertMarker\",'GUI'] call compile preprocessfilelinenumbers \"insanity.sqf\"";
NB: Really sorry for this crappy code, it has been made by a beginner you know ^_^