Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Source Injector Dll


stronka111

Rekomendowane odpowiedzi

Opublikowano

Jest nowy dział to stwierdziłem że można coś napisać:)

Każdy hack lub bot który działa na zminimalizowanym oknie jest w formie pliku .dll (do metin2)

Aby takowy plik wstrzyknąć do metina potrzebny jest injector i właśnie w tym temacie podam kod źródłowy injectora który działa:)

 

Source:

#include <iostream>
#include <string>
#include <windows.h>
#include <tlhelp32.h>

using namespace std;
DWORD GetProcID(string ProcName);
DWORD WINAPI GetCurrentProcessId(void);
BOOL ProcessExists(string process);
int inject();

int main()
{
   WinExec("metin2client.bin", SW_SHOW); 
   inject();

}

int inject()
{
   char* DLLName="nazwadll.dll";
   char* ProcessName="metin2client.bin";

   DWORD procID = 0;

   int nBufferLength = 100;
   CHAR awBuffer[100];
   GetCurrentDirectory(nBufferLength, awBuffer) ;
   strcat(awBuffer,"\\");
   strcat(awBuffer,DLLName);
   string dll = awBuffer;
   HMODULE hLocKernel32 = GetModuleHandle("Kernel32");
   FARPROC hLocLoadLibrary = GetProcAddress(hLocKernel32, "LoadLibraryA");
   HANDLE hToken;
   TOKEN_PRIVILEGES tkp;

   if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
   {
       LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid);
       tkp.PrivilegeCount = 1;
       tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
       AdjustTokenPrivileges(hToken, 0, &tkp, sizeof(tkp), NULL, NULL);
   }

   HANDLE hProc = INVALID_HANDLE_VALUE ;

    while (!ProcessExists(ProcessName)){} //czekanie na proces

   procID = GetProcID(ProcessName);
   hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);      

   dll += '\0';
   LPVOID hRemoteMem = VirtualAllocEx(hProc, NULL, dll.size(), MEM_COMMIT, PAGE_READWRITE);
   DWORD numBytesWritten;
   WriteProcessMemory(hProc, hRemoteMem, dll.c_str(), dll.size(), &numBytesWritten);
   HANDLE hRemoteThread = CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)hLocLoadLibrary, hRemoteMem, 0, NULL);
   bool res = false;

   if (hRemoteThread){
       res = (bool)WaitForSingleObject(hRemoteThread, 10000) != WAIT_TIMEOUT;

   VirtualFreeEx(hProc, hRemoteMem, dll.size(), MEM_RELEASE);
   CloseHandle(hProc);
   }
}
DWORD GetProcID(string ProcName)
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = sizeof(PROCESSENTRY32);
do{
       //cout << pe32.szExeFile <<"\n";
	if(pe32.szExeFile == ProcName){
           DWORD ProcId = pe32.th32ProcessID;
           CloseHandle(hProcessSnap);
           return ProcId;
	}
} while(Process32Next(hProcessSnap, &pe32));
CloseHandle(hProcessSnap);
return 0;
}

BOOL ProcessExists(string process)
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = sizeof(PROCESSENTRY32);
do{
	if(pe32.szExeFile == process){
           CloseHandle(hProcessSnap);
           return true;
	}
} while(Process32Next(hProcessSnap, &pe32));
CloseHandle(hProcessSnap);
return false;
}

 

hmm trudno mi tu cokolwiek opisywać bo to nie ma większego sensu ale napisze tylko to co ci będzie potrzebne:)

 

1. Aby skompilować kod musisz mieć np Dev c++

2. Ta instrukcja uruchamia metina:

WinExec("metin2client.bin", SW_SHOW); 

3. Tutaj podajemy nazwe naszej dll

 char* DLLName="nazwadll.dll";

4. Tutaj podajemy nazwe procesu czyli taką samą jak żeśmy uruchomili:)

### 5. Aha jeszcze jedno dll i wasz skompilowany plik exe musi być w folderze z metinem:)

 

To będzie już koniec ale chciałbym jeszcze dodać dwa słowa... Jeżeli mamy w procesach już uruchomionego metina metin2client.bin to ten source nie zadziała.

Po prostu nie może być uruchomiony drugi metin, który ma w nazwie metin2client.bin:)

 

##Jak jakiś moderator chce to może to sformatować:)

 

##źródło:

http://www.unfair-gamers.com/forum/showthread.php?tid=179

eh...

Opublikowano

Dzięki C++ Dowiesz się wszystkeigo !: P

Ktoś kiedyś krzyknął CHCE MINUS ! Teraz to ja jestem tym kimś.

30646.gif

sygnatura159axw2.png

http://www.mpcforum.pl/topic/268015-dlitemshop-za-pomoca-sms-shop/

http://www.mpcforum.pl/topic/273585-dlmapa-w-atlantydzie-v2/

http://www.mpcforum.pl/topic/283539-dlgotowce-na-serwer-by-kierownik/

http://www.mpcforum.pl/topic/271514-dlporadnikdodanie-sztabek-2510-kk/

 

Opublikowano

z ciekawości sprawdziłem czy antywirusy coś wykrywają i nawet dobry wynik ma:)

http://www.virustotal.com/file-scan/report.html?id=591545e6d9ffdd1ff3878239bc176bc974baefb81c7bba5e288a77e17195205f-1295304288

Tylko jakieś cienkie antywirusy coś wykrywają;p

 

HS nic nie wykrywa ale tak jak mówie on blokuje dostęp wstrzykiwania dll i dlatego gdy jest już uruchominy jeden metin i uruchomimy tym plikiem co skompilowaliśmy to uruchomi się tylko metin bez hacka:)

eh...

Opublikowano

Ale jeśli ktoś jest zainteresowany to mogę napisać program który zainjectuje przed włączeniem się HSa.

#Include <brain.h>

Opublikowano

Dobra, programowanie to najmniejszy problem, ale jak wyciagnac wartosci z metina (pointery, adresy)? Ja z kirko probowalismy olly'm ale nie mozna bylo dostac sie do procesu. Mi sie udalo dostac ale nie moglem wyszukiwac wartosci (proces zablokowany) Wyszedl tez nowy CE, ktorego metin nie wykrywa ale tez po otworzeniu procesu (pierwsze sek. po uruchomieniu) pozniej, w grze nie mozna skanowac, proces zabezpieczony :/

Opublikowano

Sprawdziłem, działa wyśmienicie ;)

Niech teraz ktoś dorobi w C++ okno programu tak zeby typy zmiennych DLL i process name dalo sie wpisywac i zeby je pobieral z labela i bylby pierwszy injector od MPC

co wiecej - nie wykrywalny ;P

Nie wiem czy dobrze opisalem proces ale w c++ jestem mierny ;p latwiej przychodzi autoit pascal i te prostsze formy programowania :D

Opublikowano

Jesli bylaby mozliwosc wpisywania zmiennych to bylby uniwersalny injector :) Wystarczyloby wtedy wyciagnac zmienne z metin2client.bin i wpisac do injectora :) Tylko teraz pytanie, czym wyciagnac te zmienne aby otworzyc zabezpieczony proces metina. Odrazu informuje ze jestem w postadaniu (wraz z kirko666) niewykrywalnego debuggera, niestety jest problem w tym ze proces jest zabezpieczony i nie mozna wyciagnac z niego wartosci.

Opublikowano

No właśnie... Próbowaliśmy to obalić, Wiem że Metin zabezpieczony jest Themidą... Gdyby można było wyciągnąć wartości to nawet byłbym skłonny napisać MH lub chociaż AutoPottera od MPC.

#Include <brain.h>

Opublikowano

Kto zna się dobrze na C++ ( a przynajmniej na tyle zeby po nacisnieciu buttona wykonal akcje a z labeli pobrał dane wprowadzając je do zmiennych)?

Daj ktoś znać na PW :P

 

Tyle zrobilem ale to tylko grafika , teraz chce dołączyć to co wyżej i mamy injectora :)

Nie mówię ,że ma być do metina :P Ma byc uniwersalny i prosty ^^

http://img163.imageshack.us/i/zxcb.png/

 

A tu kod do C++ Visuala jak ktos by chciał spróbować sił:

 

 

#pragma once

 

namespace hh {

 

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

 

/// <summary>

/// Summary for Form1

/// </summary>

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

//

//TODO: Add the constructor code here

//

}

 

protected:

/// <summary>

/// Clean up any resources being used.

/// </summary>

~Form1()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::Label^ label1;

private: System::Windows::Forms::Label^ label2;

private: System::Windows::Forms::Button^ button1;

private: System::Windows::Forms::TextBox^ textBox1;

private: System::Windows::Forms::TextBox^ textBox2;

protected:

 

private:

/// <summary>

/// Required designer variable.

/// </summary>

System::ComponentModel::Container ^components;

 

#pragma region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

void InitializeComponent(void)

{

this->label1 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

this->button1 = (gcnew System::Windows::Forms::Button());

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->textBox2 = (gcnew System::Windows::Forms::TextBox());

this->SuspendLayout();

//

// label1

//

this->label1->AutoSize = true;

this->label1->Location = System::Drawing::Point(12, 32);

this->label1->Name = L"label1";

this->label1->Size = System::Drawing::Size(84, 13);

this->label1->TabIndex = 0;

this->label1->Text = L"Nazwa procesu:";

//

// label2

//

this->label2->AutoSize = true;

this->label2->Location = System::Drawing::Point(30, 68);

this->label2->Name = L"label2";

this->label2->Size = System::Drawing::Size(66, 13);

this->label2->TabIndex = 1;

this->label2->Text = L"Nazwa DLL:";

//

// button1

//

this->button1->Location = System::Drawing::Point(56, 134);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(165, 40);

this->button1->TabIndex = 2;

this->button1->Text = L"Injectuj!";

this->button1->UseVisualStyleBackColor = true;

this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);

//

// textBox1

//

this->textBox1->Location = System::Drawing::Point(102, 25);

this->textBox1->Name = L"textBox1";

this->textBox1->Size = System::Drawing::Size(170, 20);

this->textBox1->TabIndex = 3;

//

// textBox2

//

this->textBox2->Location = System::Drawing::Point(102, 61);

this->textBox2->Name = L"textBox2";

this->textBox2->Size = System::Drawing::Size(170, 20);

this->textBox2->TabIndex = 4;

//

// Form1

//

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(284, 262);

this->Controls->Add(this->textBox2);

this->Controls->Add(this->textBox1);

this->Controls->Add(this->button1);

this->Controls->Add(this->label2);

this->Controls->Add(this->label1);

this->Name = L"Form1";

this->Text = L"Injector Wojtas";

this->ResumeLayout(false);

this->PerformLayout();

 

}

#pragma endregion

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

}

};

}

 

 

 

Opublikowano

stronka111 ty jesteś cwany :D właśnie tego szukałem :) daje + napisze Ci na pw i daj mi swoje gg:) razem cos porobimy :D

JEŚLI CI POMOGŁEM WEJDŹ TUTAJ

http://www.pajacyk.pl/ I KLIKNIJ W BRZUCH PAJACYKA, W TEN SPOSÓB NAKARMISZ GŁODNE DZIECI... A JEŚLI TO ZA MAŁO TO MOŻESZ MI DAĆ + I 5 NA KANALE... ALE PAMIĘTAJ GŁODNE DZIECI SĄ WAŻNIEJSZE NIŻ + I 5...

 

Konto YouTube: http://www.youtube.com/user/TheMrBoomGood

Człowiek rodzi się mądry, dopiero potem idzie do szkoły...

Opublikowano

Tak już się za to zabrałem ale za cholere nie wiem jak w obsługę zdarzeń do buttona dodać to co dał stronka ale zapewne zle kombinuje bo c++ ogolnie nie znam chociaz okno napisane w winapi itd. tylko teraz to "zlepic" w kupe...

Opublikowano

Ciekawe, mówicie że injectnięcie dllki przed hsem działa? To polecam IIDKing2 (nie pamiętam dokładnie nazwy) stworzony przez Reverse Engeeners Team (to nie reklama). Dzięki niemu można wskrzyknąć dlla na stałe do exeka. Tylko nie wiem czy poradzi sobie z binem, ale nie powinien mieć problemów. On zapisuje headery PE (na tym to się za bardzo nie znam) dzięki czemu dllka odpala się jako jedna z pierwszych (jeśli kod jest w begin...end lub w wątku to odpali się zanim włączy się klient). Można w taki sposób zrobić stałą blokadę HS'a, tylko trzebaby znaleść moment w którym się uruchamia. Btw. tym sposobem można sobie wszystko wyciągnąć, zaraz z tym pokombinuję, może coś ciekawego wyjdzie.

 

#EDIT:

Swoją drogą, wynik mojego uniwersalnego injectora: http://www.virustota...ad02-1296856966

Jestem lepszy :D

 

#EDIT2:

@up: Skoro robisz tylko w winapi przerzuć się na C++ Builder od Borladna/Czegototam teraz to robi. Tam masz to łatwiej ogarnięte i sobie bez problemu gui skleisz :P

A skoro jeszcze nie ogarniasz C++ to masz szansę się nawrócić i zacząć pisać w Delphinie :) Polecam, jest bardziej intuicyjne od C++ a skoro i tak piszesz tylko pod windę to multiplatformowość Ci nie potrzebna.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

  • 2 tygodnie później...
  • 3 miesiące temu...
Opublikowano
Każdy hack lub bot który działa na zminimalizowanym oknie jest w formie pliku .dll

gówno wiesz na temat dll, polecam zapoznać się z tym terminem.

DLL

 

pozdrawiam, ~MrOMGWTF.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...