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

MemoryRead


Rekomendowane odpowiedzi

Opublikowano

Korzystałem z poradnika znalezionego na YT:


Mój kod wygląda tak :

#RequireAdmin
#include <nomadmemory.au3>
$PID = ProcessExists ("Tutorial-i386.exe")
$mOPEN = _MemoryOpen ($PID)
$Adress = "0x0014C5BO"
$mREAD = _memoryread($Adress,$mOPEN,"dword")
MsgBox (64,"",$mOPEN)
$mWRITE = _memorywrite ($Adress,$mOPEN,"","dword")
_MemoryClose ($mOPEN)

 

Ale nie chce to działać.

To znaczy, AutoIT nie wyrzuca błędów, ani ostrzeżeń ale tekst w MsgBox jest pusty (jakby $mREAD = "")

Nie wiem co zrobiłem źle

Próbowałem także z zaznaczonym Hex, ale to również nie dawało skutków

Proszę o poradę :D

Pozdrawiam

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano
"0x0014C5BO"

Nie pisze się tych liczb w cudzysłowiach.

Opublikowano

A _MemoryModuleGetBaseAddress?

 

Ja mam taki kod:

$iPID = ProcessExists("costam.costam")
$hOpen = _MemoryOpen($iPID)
$iBase = _MemoryModuleGetBaseAddress($iPID, "costam.costam")

$p_base_HP = "0x003AF059"
$base_HP1 = $iBase + $p_base_HP
$base_HP2 = _MemoryRead($base_HP1, $hOpen)

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano
#RequireAdmin
#include <nomadmemory.au3>
#include <MemoryGetBaseAddressUDF.au3>
$PID = ProcessExists ("Tutorial-i386.exe")
$mOPEN = _MemoryOpen ($PID)
$Adress = 0x00191888
$mREAD = _memoryread($Adress,$mOPEN,"dword")
MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '_memoryread($Adress,$mOPEN,"dword")' & @CRLF & @CRLF & 'Return:' & @CRLF & _memoryread($Adress,$mOPEN,"dword")) ;### Debug MSGBOX
_MemoryClose ($mOPEN)

Nadal nie działa, Nadal funkcja zwraca 0

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

@JDaniel1

A mojego posta nie przeczytałeś?

 

Zobacz tak;

#include <NoMadMemory.au3>
$iPID = ProcessExists("Tutorial-i386.exe")
$hOpen = _MemoryOpen($iPID)
$iBase = _MemoryModuleGetBaseAddress($iPID, "Tutorial-i386.exe")

$p_base_adress = "0x00191888"
$base_adress1 = $iBase + $p_base_adress
$base_adress2 = _MemoryRead($base_adress1, $hOpen)

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

@MistrzMaster (patrzyłem, tylko nie mogłem znaleść funkcji _MemoryModuleGetBaseAddress) 

Nie mam aktualnej biblioteki Nomad albo funkcja  _MemoryModuleGetBaseAddress operuje na innej.

 

EDIT:
Dodałem tą funkcję do Nomadmemory.au3

Skrypt nadal nie działa nadal zwraca 0  :P

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

Nagrać ci to?

 

EDIT:

@MistrzMaster

https://www.youtube.com/watch?v=s4jYNEHq_B8&feature=youtu.be

Mam nadzieję, że coś widać :D

 

EDIT2:

Później będę chciał chciał wykorzystać odczytywanie pamięci w celu odczytu pamięci z NosTale

Jeśli macie jakieś rady dot. tej gry to napiszcie, czy trzeba te offsety itp 

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

@JDaniel1

Ok, mi też to coś szwankuje ale z ciekawości zobaczyłem sobie na offsety i działa.

#include <NoMadMemory.au3>
$iPID = ProcessExists("Tutorial-i386.exe")
$hOpen = _MemoryOpen($iPID)
$iBase = _MemoryModuleGetBaseAddress($iPID, "Tutorial-i386.exe")

$p_base_adress = "0x00157F00"
$offset1 = 0x54
$offset2 = 0x4
$offset3 = 0x0
$offset4 = 0x480
$base_adress1 = $iBase + $p_base_adress
$base_adress2 = _MemoryRead($base_adress1, $hOpen) + $offset1
$base_adress3 = _MemoryRead($base_adress2, $hOpen) + $offset2
$base_adress4 = _MemoryRead($base_adress3, $hOpen) + $offset3
$base_adress5 = _MemoryRead($base_adress4, $hOpen) + $offset4
MsgBox(0, "a", _MemoryRead($base_adress5, $hOpen))

Co do NosTale, sam zrobiłem bota, i na hp/mp mam po cztery offsety.
 

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

post-704021-0-32185400-1427400957.png

@MistrzMaster

Mój komputer nadal jest opętany, nadal zwraca 0. (Twój skrypt)

Teraz się skapnąłem, że źle zrozumiałem odczytywanie offsetów z CE. Będę musiał nad tym jeszcze posiedzieć :P

 

Kurczę, a myślałem że Memory to będzie proste, poszukam wartości w CE, dam adres do _memoryread i już xD

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

Wyświetli ci się to jak na jakimś adresie na liście klikniesz prawym i Change record > Adress.

Opublikowano

Mam już najnowszą znalazłem to co pisał Master.

Tylko muszę od początku wszystko szukać. offsety, base adresy itp. Bo tam miałem wszystko zapisane

Chyba że coś źle kumam i wy mi tłumaczycie tak a ja rozumiem inaczej xD

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

@JDaniel1

Wystarczy, że poszukasz normalnie adresu (tego którego chcesz) dodasz go do tej dolnej tabeli, klikniesz prawym i "Pointer scan for this adress" dodasz pierwsze 20 z listy (ja tak robię), później restartujesz proces, odpalasz znowu w CE i patrzysz czy pointery w CE nadal wskazują tą wartość której potrzebujesz.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

post-704021-0-96030500-1428174367_thumb.png

 
 

Taki oto problem.

Offset nie moze być C ponieważ wykrywa błąd (literę C uznaje jako jakąś funkcję)

 

Teraz wziąłem adresy do NosTale nie do tutoriala.

Jak coś źle zrobiłem, podać cały kod to napiszcie.

 

PS: Wziąłem 2 adres z skanera pointerów nie ten zaznaczony :D

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

Liczby w systemie szesnastkowym należy zapisywać z przedrostkiem 0x. Przykłady:

$zmienna = 0x5B
funkcja($zmienna, 0xC)
$flaga = $zmienna - 0xFFFFFFFF

;a

Próbowałeś C z małej litery?

//edit

offsety są podawane w wartościach heksadecymalnych czyli musisz zrobić "0x" przed offsetem.

AutoIT nie rozróżnia małych i wielkich liter(poza napisami). Sprawia to że np. taki kod jest poprawny:

FUNc FuNkCjA(byREF $ArGuMeNt)
	$ARGumENT *= 10
endfunc

$zMieNNa = 5
funkcja($ZMiEnnA)
mSGbOX(0,"",$zmiennA)

Prowadzi to oczywiście do nieczytelności kodu(bo każdy pisze wedle gustu), ale mówienie "spróbuj napisać z małej litery" jest bez najmniejszego sensu. Zwłaszcza jeśli error mówi o czymś zupełnie innym...

Opublikowano

Wiem, moja pomyłka o przedrostku 0x. Teraz mam skrypt

#include <NoMadMemory.au3>
#RequireAdmin
$ipid = ProcessExists("NostaleX.dat")
$hOpen = _MemoryOpen($iPID)
$iBase = _MemoryModuleGetBaseAddress($iPID, "NostaleX.dat")



$hopen = _memoryopen($ipid)
$ibase = _memorymodulegetbaseaddress($ipid, "NostaleX.dat")
			$p_base_hp = "0x003FC9D8"
			$offset1 = 0x160
		$offset2 = 0x20
	$offset3 = 0x4
	$offset4 = 0xC
	$offset5 = 0x4C

	$base_adress1 = $ibase + $p_base_hp
$base_adress2 = _MemoryRead($base_adress1, $hOpen) + $offset1
$base_adress3 = _MemoryRead($base_adress2, $hOpen) + $offset2
$base_adress4 = _MemoryRead($base_adress3, $hOpen) + $offset3
$base_adress5 = _MemoryRead($base_adress4, $hOpen) + $offset4
MsgBox(0, "a", _MemoryRead($base_adress5, $hOpen))

I nadal zero... 

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

@Fireho

Ok, o tym nie wiedziałem. Było to pierwsze co wpadło mi do głowy, bo właśnie u siebie miałem to z małej, dopiero później zauważyłem brak "0x"

@JDaniel1

Sprawdziłeś w CE drugi raz (po włączeniu i wyłączeniu gry) jaką wartość teraz ma ten adress(pointer)? Często jest tak, że po zresetowaniu gry część pointerów nie działa.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

@MistrzMaster Pointer scanner służy do tego aby znaleźć te, które zawsze działają... Błąd jest w czym innym.

 

Takich offsetów(0x003FC9D8, 0x160, 0x20, 0x4, 0xC, 0x4C) nie widzę nigdzie na twoim screenie. Wybierz któryś konkretny wskaźnik, bo aktualnej kombinacji nigdzie nie ma.

Opublikowano

@Fireho

To dziwne, bo u mnie dopiero po drugim razie udaję się usunąć wszystkie wartości "???" poza tym gdyby tak było, do jakiego celu zostałaby stworzona opcja "rescan memory" w pointer scanerze?

Teraz bardziej do tematu i do zdjęcia, te offsety są w drugim wierszu. Racja, adres jest inny.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...