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

[C++]Wstrzyknięcie DLL i operowanie pamięcią


Ksry

Rekomendowane odpowiedzi

Opublikowano

Cześć. Nigdy nie bawiłem się w winapi, zwykle bardziej wygodne rozwiązania i biblioteki graficzne jak sfml etc., dlatego teraz jestem troszkę zagubiony. Chciałem napisać bota do Tibii[8.1], którego z czasem bym aktualizował o nowe komponenty. Napisałem injector, ale z DLLką mam problem, mianowicie - w jaki sposób mogę wczytywać i nadpisywać dane procesu? Na necie wyczytałem coś o funkcjach takich jak GetWindowThreadProcessId oraz WriteProcessMemory, no ale skoro moja dllka jest wstrzyknięta do procesu, to czy koniecznie muszę używać tych funkcji? Nie ma ona do tego dostępu? :P

Wartość HP to 0x613B6C - teraz, w jaki sposób z dllki wstrzykniętej do procesu mogę zmienić tę wartość?

 

a tak btw. martwię się na przyszłość, bo chciałbym do takiego bota zrobić okienko [w stylu clienta] w którym ustawiałoby się wszystkie komponenty bota. jakieś pomysły jak takie coś zrobić?

Opublikowano

możesz zmienić ustawiając w dll wskaźnik typu

int *hp = (int *)0x613B6C;
*hp = 1337;

 

co do okienka to robisz sobie normalne exe z tym interfejsem graficznym i komunikujesz się ze swoją dll używając współdzielonej pamięci, pipów lub czegoś równie fajnego :)

Opublikowano

Cześć, dzięki za odpowiedź. Mógłbyś podać mi przykład najprostrzej zinjectowanej DLL? Próbowałem tej od winapi ale nawet messagebox nie działa, podobnie z innymi przykładami podanymi w internecie. Injector jest raczej w porządku, bo DLLka z innym botem działa normalnie z moim exekiem..

Jak już o okienku, to exe ma służyć jedynie do wstrzyknięcia dll, więc sam interfejs menu bota powinien być zawarty już w dllce.. Chodziło mi raczej o sposób wyciągnięcia funkcji z clienta i użycie ich u mnie(nie wiem za bardzo jak to wyjaśnić jeśli chodzi o C++, bo mało w tym języku kodowałem).

Dalej, czy w tej DLLce ma się znajdować jakaś "pętla główna"? Bo inaczej tego nie widzę.

 

Sorry za taką ilość pytań, ale jestem laikiem, i w dodatku z taką naturą, że trzeba mnie z początku za rączkę prowadzić :D chyba jeszcze wielu rzeczy nie rozumiem, ale zawsze lubiłem uczyć się w praktyce

Opublikowano

#include <windows.h>
int __stdcall DllMain(HINSTANCE hInst, unsigned long Reason, void *Reserved)
{
    if (Reason == DLL_PROCESS_ATTACH)
    {
		    MessageBoxA(0,"Inside DllMain()","Info",MB_OK);
    }
    return 1;
}

 

możesz podebugować ollydbg żeby znaleźć funkcje w kliencie o ile wiesz jak się do tego zabrać, tego prosto się nie da wytłumaczyć, skoro mało ogarniasz to interfejs w dll zostaw sobie na później. Co do "pętli głównej w dll" to możesz sobie zrobić nowy wątek CreateThread() z nieskończoną pętlą i np. jakimś małym Sleep() em, nieskończonej pętli w dllMain nie rób bo zatniesz program.

Opublikowano

Dzięki za to source, jednak nawet po skompilowaniu kodu żywcem i wstrzyknięciu dll nic się nie dzieje. Injector jest dobry, działa z innym dll.. Aż takich przeciwności się nie spodziewałem na start :D Może coś z kompilatorem nie tak? Używam Code::Blocks :P

Opublikowano

Sprobuj innego injectora lub po prodtu napisz program co sam zaladuje to twoje dll

 

...

LoadLibrary("test.dll");

 

Funkcja ta jest w windows.h

Opublikowano

Noooo, użyłem 2 różnych injectorów znalezionych w google i żadna z nich nie działa. A próbowałem tej z DLL z innego bota, to bez zarzutów jest injectowana. Tak myślę, że błąd raczej jest po stronie DLL, bo nie mogę usunąć dllki dopóki nie zamkę clienta gry - co znaczy, że poprawnie jest wstrzykiwana do aplikacji.

może coś z kompilatorem nie tak? bo nawet gotowy projekt Code::Blocks nie działa po zainjectowaniu :P

Opublikowano

Zrób sobie nowy projekt bo może coś pomieszałeś w opcjach, albo użyj innego kompilatora (polecam Visual C++).

Twoja stara robi catch the clowny w Game Makerze.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...