Skocz do zawartości

MemoryRead


Polecane posty

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
#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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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...

693331407164320964501.jpg

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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.

693331407164320964501.jpg

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×
Okienko zamknie się za 5 sekund...