Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Wallhack w haku midfunction
#1
Drodzy zebrani,   Tworzę prostą bibliotekę HTML. Stworzyłem hak sprzężenia dla DIP w d3d9.dll. Zaimplementowana funkcja działa poprawnie do 30 sekund. Hack ścienny zniknął. Nie wiem, co jest złego, lub muszę mieć więcej funkcji.   Jestem nowicjuszem w Directx. Wiem, że muszę przeczytać samouczek DirectX. W każdym razie muszę zrobić przykładową aplikację, aby udowodnić wcześniej koncepcję hakerską. Czy ktoś mógłby mi w tym pomóc?   Poniżej znajduje się mój kod w funkcji hook DIP     Kod:   __declspec (naga) void WINAPI MyDipFunc () {UINT m_Stride; UINT PrimitiveCount; UINT StartIndex; UINT NumVertices; UINT MinIndex; INT BaseIndex; D3DPRIMITIVETYPE PrimitiveType; LPDIRECT3DDEVICE9 deviceInterface; LPDIRECT3DVERTEXBUFFER9 Stream_Data; UINT OffsetInBytes; __asm PUSHAD __asm MOV EAX, DWORD PTR SS: [EBP + 0x20] __asm MOV DWORD PTR DS: [PrimitiveCount], EAX __asm MOV EAX, DWORD PTR SS: [EBP + 0x1C] __asm MOV DWORD PTR DS: [StartIndex], EAX __asm MOV EAX, DWORD PTR SS: [EBP + 0x18] __asm MOV DWORD PTR DS: [NumVertices], EAX __asm MOV EAX, DWORD PTR SS: [EBP + 0x14] __asm MOV DWORD PTR DS: [MinIndex], EAX __asm MOV EAX, DWORD PTR SS: [EBP + 0x10] __asm MOV DWORD PTR DS: [BaseIndex], EAX __asm MOV EAX, DWORD PTR SS: [EBP + 0x0C] __asm MOV DWORD PTR DS: [PrimitiveType], EAX __asm MOV EAX, DWORD PTR SS: [EBP + 0x08] __asm MOV DWORD PTR [deviceInterface], EAX // Uzyskaj wskaźnik DIP, jeśli (deviceInterface -> GetStreamSource (0, & Stream_Data i OffsetInBytes, & m_Stride) == D3D_OK) {Stream_Data -> Release (); } If (m_Stride == 44) {DWORD dwOldZEnable; LPDIRECT3DTEXTURE9 texGreen, texRed; GenerateTexture (deviceInterface, texGreen, D3DCOLOR_ARGB (255, 0, 255, 0)); GenerateTexture (deviceInterface i texRed, D3DCOLOR_ARGB (255, 255, 0, 0)); deviceInterface -> GetRenderState (D3DRS_ZENABLE, & dwOldZEnable); deviceInterface -> SetRenderState (D3DRS_ZENABLE, D3DZB_FALSE); deviceInterface -> SetRenderState (D3DRS_FILLMODE, D3DFILL_SOLID); deviceInterface -> SetTexture (0, texGreen); RemoveDetour (DIPOrgValue, (BYTE *) (DWORD *) DIP, DIPInstructionLength); deviceInterface -> DrawIndexedPrimitive (PrimitiveType, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount); CreateDetour ((BYTE *) DIP, (DWORD) MyDipFunc, DIPInstructionLength); deviceInterface -> SetRenderState (D3DRS_ZENABLE, dwOldZEnable); } __Asm POPAD __asm MOV DWORD PTR SS: [EBP - 4], 0 // Zastąp kod __asm jmp [DIPJmpBack]}   Dzięki, PS
Reply
#2
Okno specjalne gry lub d3d? Domyślam się, że AC odryga twój hak ręcznie
Reply
#3
To jest zaciemnienie projektu
Reply
#4
Tak, myślę, że się odsuwają: P Dodaj klawiaturę, aby zawsze trzymać wciśnięty klawisz i zobacz, co się stanie po tych 30 sekundach, jeśli się ponownie uruchomisz
Reply
#5
Drogi, Dzięki za szybką odpowiedź Wynik testu polega na tym, że pamięć nie została przywrócona. Dowolny pomysł?
Reply
#6
Zwykle hackshield (uważam, że PB używa HS) przywraca go do 3 razy, a następnie zawiesza grę. Potrzebujesz kolejnej metody zaczepiania, spróbuj ją zahaczyć bezpośrednio w silniku (exe-module) i prześledzić wstecz przez _ReturnAddress (). O ile wiem, że VMT i objazdy są sprawdzane przez HS, nowy sterownik również przechwycił HWBP, więc nie zostało wiele do wypróbowania.
Reply
#7
Drogi JD96, Tak jak powiedziałeś T T. Przepraszam za mój błędny wynik testu. W każdym razie czy masz przykładowy kod na zaczepieniu go bezpośrednio w silniku? lub podaj mi więcej szczegółów W rzeczywistości nie mogę sobie wyobrazić, jak to zrobić.
Reply
#8
Jak już powiedziałem, po prostu wyśledź połączenie z powrotem do jego źródeł, na przykład możesz użyć _ReturnAddress (), a następnie spróbuj złamać RETN (patrz wcześniej, a następnie użyj hardwarebreakpoints, ponieważ sterownik hs wykrywa je po 3 minutach), aby znaleźć wywołanie modułu, który chcesz (silnik tutaj wierzę) = D
Reply
#9
umm po uruchomieniu ollydbg gra natychmiast przerwała T T. W każdym razie postaram się dowiedzieć, jak _ReturnAddress () jest przydatny przy zahaczaniu Dzięki, PS
Reply
#10
Zacytować: Originally Posted by padungsak umm po uruchomieniu ollydbg gra natychmiast przerwała T T. W każdym razie postaram się dowiedzieć, jak _ReturnAddress () jest przydatny przy zahaczaniu Dzięki, PS Po prostu uruchom do momentu załadowania, aby natychmiast zatrzymać! To tylko referencja, nie można naprawdę debugować kodu.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)