filuu Napisano Czerwiec 19, 2006 Zgłoś Share Napisano Czerwiec 19, 2006 [quote] Przejrzyjcie to:http://www.unit1.pl/forum/viewtopic.php?t=445 [/quote]Zaglądał ktoś ?? Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
Firen Napisano Czerwiec 19, 2006 Zgłoś Share Napisano Czerwiec 19, 2006 No Toster jak zwykle musi ratowac sytuacje Jak ktos jest zainteresowany zarzadzaniem pamiecia niech przestanie tu gdybac i przeczyta sobie rozdzial o tym w "Podstawach Systemow Operacyjnych". Przestaniecie wtedy takie herezje tu glosic Toster: wez mi tylko wytlumacz co masz na mysli mowiac tryb rzeczywisty i chroniony Down With The Sickness Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 19, 2006 Zgłoś Share Napisano Czerwiec 19, 2006 tryb rzeczywisty http://en.wikipedia.org/wiki/Real_modetryb chronionyhttp://en.wikipedia.org/wiki/Protected_mode@Filuu tak wlasnie mi cos po dynce chodzilo ze o tym juz bylo ale jakos nie chcialo mi sie searcha wlaczac Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
DarkAndrew Napisano Czerwiec 19, 2006 Zgłoś Share Napisano Czerwiec 19, 2006 Toster każdy progs ma obszar do 4gb bo się więcej nie da zaallokować "Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek Link do komentarza Udostępnij na innych stronach More sharing options...
Firen Napisano Czerwiec 19, 2006 Zgłoś Share Napisano Czerwiec 19, 2006 Imo 'zaadresowac' byloby lepszym slowem oraz 'proces' zamiast 'progs', ale i tak wszyscy wiedza o co chodzi, jak to jeden master powiedzial na tym forum ;p Down With The Sickness Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Czerwiec 19, 2006 Zgłoś Share Napisano Czerwiec 19, 2006 Dobra to teraz Gif się wypowie 8) winda jak to winda chroni pamięć albo i nie, ale kto to tam wie ;pa teraz przyspieszony kursik dobierania się od innych programów :>Pierwsze co musimy zrobić to oczywiście stworzyć uchwyt do procesu którego pamięć chcemy edytować/czytać/itd.wiec o to dodajemy 4 magiczne zmienne :> [code=Delphi] ^hwx(ŚkćpĘ\"y'jŚy3ĘvŚĘui' Window := 0; ProcessID := 0; hProcess := 0; FillChar(naYKK NB[H[[Ę[ Ó^WH ĘNBŚbvćFrfCfwCFV&VvvWEvćFuF&VE&%Ą]A%4(A%ŃĄ4(lse begin hProcess := OpenProcess(PROCESS_ALL_ACCESSYKQ NBYH[B6R&Vv7G'Vś6ŚRćŚ6&6W7P4(4(4( [/code]a i funkcja Ptr() dla niewtajemniczonych to jest pointer, a jeśli to wam nie wystarcza to odsyłam na msdn gdzie są wszystkie funkcje szczegółowo opisane. A i najważniejsze zmienna w tym przypadku jest to integer ale równie dobrze może to być string lub tablica charow.@DarkAndrew i innia i co do wielkości zadeklarowanej pamięci to faktycznie normalnie maxymalnie można 4GB ale jak sie wie jak to można to obejść :> "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 tymi prockami mozna juz rzeczywiscie wypisac cala pamiec kazdego programu?napisal ktos juz jakies demko uzywajace ten kod? Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 ja mam demko .....Tylko [b]nierozumiem Ci demko ...... wszystko jest napisane .. Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 nie jestem doswiadczonym programistą i w powyzszych kodach widze sporo niejasnosci ;(- co to jest name w 3 linijce?- skad wiemy ile pamieci przydzielone jest procesowi, tj. jak skonstruowac petle nie nieskończoną?- skad wiemy czy cos pod danym adresem jest int a co string? Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Czerwiec 20, 2006 Autor Zgłoś Share Napisano Czerwiec 20, 2006 Najlepiej napisać własnego OS-a i bez problmu ma sie dostep do całej pamięci www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 ajajajkombinuje i kombinuje.ale nie potrafie, nie moge tego kodu uruchomic... ktos jeszcze probowal? Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 czego nie potrafisz ? ten kod jest żywcem wyciety z mojego progosa -.-1)to 'name' mozesz olac bo to jest tablica charow przez przypadek sie zaplatalo tzn. zapomnialem usunac po przeklejeniu2) Nie musisz tego wiedziec. w ogole po co ci to ?3) to jest nie istotne, wszystko co jest w pamieci mozesz odczytac jako int albo string zaleznie jak ci jest wygodniej. "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
ktoś Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 [code=Delphi] FillChar(name, 31, 0); [/code][error] Constant object cannot be passed as var parameter // dotyczy "name"Hmm.... Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 okej. dzieki.w tej czesci "instrukcje na pamięciprocesu" dalem taki kod: [code=Delphi] for i:=1 to 100 do begin Inc(adr)YZ[H[YHX[HYHBE&6W74V'&6W72G\"G\"ffF4(ŃĄŃQMŃĄŹŹŃQMŃĄ; end; [/code]to jest moj kod, ale chyba nawet do niego nie program nie dochodzi... w debuggerze w miejscu if Window <> 0 then zwraca zawsze ze window jest 0...i kod sie nie wykonuje..ajajaja moze bys pokazal kod poprawny, bedzie mozna znalezc bledy i wreszcie sie nauczyc pisac pozdrawiam-----ktoś - name to jakiś string i juz sie kompilator nie czepia wtedy Link do komentarza Udostępnij na innych stronach More sharing options...
ktoś Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 zauważyłem ale nie zdążyłem usunąć, bo odpowiedziałeśzauważyłem też, że instrukcjewindow := 0;hProces := 0;nie są wykonywane.oraz drobny szczegół przy instrukcjach warunkowych:[b]poco pisać [code=Delphi] if cośtam = cośtam2 then else begin instrukcje7)Ś+ui'if cośtam <> cośtam2 then begin [/code]??Poza tym u mnie kod nie działa. Kombinowałem nawet z usuwaniem warunków. Zawsze zatrzymuje się na następnym : window zawsze = 0procesID = 0hProces = 0no chyba, ze ja [b]poprostu nie umiem tego obsłużyć... CO konkretnie wpisać w "nazwa procesu"? w delphi faq znalazłem to: [quote] 47. Jak pobrać uchwyt ( Handle ) dowolnego okna?Służy do tego funkcja \"FindWindow\". Żeby pobrać uchwyt należy znać właściwość \"Caption\" lub \"ClassName\". Jeżeli nie znamy, któregoś z tych elementów wstawiamy nil. Przykład pobrania uchwytu Inspektora Obiektów. var H : THandle;begin FindWindow(nil,'Object Inspector'); [/quote]"Caption", to chyba ten tekst wyświetlany na niebieskim pasku na górze okna, tak? nazwa procesu to to samo? Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 mi sie wydaje ze nazwa procesu to "nazwa obrazu" z menedżera zadań windows... czyli np. notepad.exe o ile takowy jest odpalony..mamy ten sam problem.. kod nigdy sie nie wykonuje , bo window =0 a poza tym u mnie jakies memory violation errory wywala.phi Link do komentarza Udostępnij na innych stronach More sharing options...
ktoś Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 od tego zacząłem sprawdzanie. Nie działa.Gifanonim, możesz dać całe źródło progsa? czy to tajemnia? Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 A to moje skromne zródełko Globalne zmienne i stałe : [code=Delphi] Const zadeklarowanastala =Ptr($71C580); HZYCBBBB][YH][YNvF\0Zą^bppD7FćR6Ć70gVć7FfćE&6W736&Fć ŃIAĄAŃ 4(Ń GetAdress: Cardinal; end; [s<j7ui' function TCzytanie.ReadFromProcess(Adr: Pointer): CardinalBBBYB]XY[fVS6&FćŚ&Vv& amp;W7VBŁvćBŁ7FćRA4(]ąŃĄ4(4(Ń]hreadPro cessID(Wnd, @pid); ph := OpenProcess(PROCESS_VM_PQ[KY NBXYÓY[[JY[YK^TbfVR'FW5&VB6Ć6TćFĆR&W7VBŁfą4(4)4([>rx^bppŚgVć7FD7FćRvWDG&W736&FćŚ&Vv&W7VBŁŃIAĄiąMŃ4)4 [/code]Mam też do zczytywania stringów Mysle ,ze to sie przyda ... jak cos to : >>Pomógł<< Pozdro Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Czerwiec 20, 2006 Zgłoś Share Napisano Czerwiec 20, 2006 a oto i caly kod ktory u mnie dziala :> [code=Delphi] unit Gifbot; interface uses Windows, Messages, Sy][X[XBX[w2WD7G&2w&G2fVFB67G&27FD7G&26Ć$w&C(4)Ń4(QąĄQ4(QQQ4(AgeControl1: TPageControl; TabSheet1: TTabSheet; TaY]XY]BXNXBX[NĆ&VĆ&V#DĆ&V6Ć$w&CD6Ć$w&C ŃŃQ ŃŃ4(QQĄMQ=); procedure TrackBar1Change(Sender: TObject); proYHPX]J[X NBYH]P66VćFW#D&ŚV7B&6VGW&R6Ć$w&C6ćvR6VćFW#Q=4(Ń4(AŃąŃ4(ą { Public declarations } end; var Form1: TForm1BB[ÓBQ[[BFć6&FćUćG&W26Ć#Ń4(Ń4(4)ąŃŃ4(4)Hfm} procedure TForm1.Timer1Timer(Sender: TObject); var [YK^VHBY[B[HB&6W74BŁ&6W72ŁfĆ6\"ćR3]]ĄQ4(]ŃĄ Window := FindWindow('tibiaclient',nil); if Window &[BY[B][XYY [&6W74Bb&6W74BFVV6R&VvĄA=AĄAI= MM}11} MLąAID); if hProcess = 0 then else begin XYÓY[[J X KVLNB&VE&6W74V'&6W72G\"CV3c&2ć(IA5ĄĄAAŃĄ); adres := $5c68b4; for I := 1 to 150 do Y[BXYÓY[[JY&W2ćR3bć6śćRfCfwC7G&ćrŃĄŹ4(ŃA5ry(hProcess, Ptr(adres+116), Ptr($C0) , 2, N); ]TÓY[[JY LLK Hw&FT'FRCrG\"G&W2\"4(źź ŃŹŃŃŃĄa@Źmana: '+ inttostr(mana)+' hp: '+ inttostr(hp); // LK[H YP^Y [Ę[YJNBf&Ó6FŁvG&W27F6rGF7G\"G&ŹŃąŹŃŃŃĄŹ4(4(4( end; end; end; procedure TForm1.TrackBar1Change([X NBY[BYXK][HH[CŚbG&6FFVŁCŚbG&6 AŃŃĄ1h4)4(4)Q.FormCreate(Sender: TObject); begin nickname := InputBox('YP ]YHX ]:XZŹXoHHXlH]JI ĘNB[BBYHLK]PX6VćFW#D&ŚV7BŚ&VvŚb'WGF6Fu{;7rFV)4) ŃŃ Ń]ć4)ą ŃŃ ŃŻn := 'Włącz'; end; procedure TForm1.ColorGrid1Change(SeYX NBY[BYYKX[[^Hb6Ć\"ŁCŚb6Ć$w&C&6św&VćDćFWFV6Ć\04)4(4)4( [/code]wrzuciłem to co najpotrzebniejsze. jest to początek bota do tibi ktorego zacząłem pisać dla kumpla ^^ "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Czerwiec 21, 2006 Zgłoś Share Napisano Czerwiec 21, 2006 Widac własnie P Btw ....Mój kod też był do Tibii Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 21, 2006 Zgłoś Share Napisano Czerwiec 21, 2006 Pojawia się tu problem odczytu danych: pamięć można "interpretować" jako int albo jako string (albo jak sie chce..)I teraz gdy czytamy jako int to wielkosc zczytywania to sizeof(zmienna int). Natomiast gdy chcielibysmy to czytac jako string?aha - co to jest 'NazwaProcesu'? czy to jest Caption okna głównego, czy to jest "nazwa obrazu" z menedżera windows czy to nazwa exeka bez rozszerzenia? hę?I zapytam po raz kolejny: skad wiemy ile pamieci jest przydzielone na proces? A jezeli jest to nie potrzebne, to jak wypisac cala pamiec procesu? Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Czerwiec 21, 2006 Zgłoś Share Napisano Czerwiec 21, 2006 [quote] Pojawia się tu problem odczytu danych: pamięć można \"interpretować\" jako int albo jako string (albo jak sie chce..)I teraz gdy czytamy jako int to wielkosc zczytywania to sizeof(zmienna int). Natomiast gdy chcielibysmy to czytac jako string? [/quote]String to tablica znakow zakonczona znakiem o kodzie ascii 0. Jesli chcesz odczytac stringa to musisz odczytywac [b]pokolei wszyskie bajty az trafisz na znak ''.Kod w c# (nie powinienes miec problemow z przetlumaczeniem na object pascala - DELPHI TO NIE JEZYK PROGRAMOWANIA!! :evil: ).Pascalpublic static string ReadString(int memAddress){//odczytanie danej typu string uint pID;GetWindowThreadProcessId(Trainer.Hwnd(), out pID); IntPtr pHandle = OpenProcess(PROCESS_ALL_ACCESS, false, pID); //dana jest zapisywana jako tablica znakow byte[] readValue = new byte[255];int i = 0;for (i = 0; i < 255; i++){ReadProcessMemory(pHandle, memAddress, out readValue[i], 1, 0);memAddress += 1; // odczytujemy nastepna litere} CloseHandle(pHandle); // zamiana tablicy znakow na dana typu stringstring readStr = System.Text.Encoding.ASCII.GetString(readValue);readStr = readStr.Substring(0, readStr.IndexOf("")); return readStr;}(wkleilem kod aby przyblizyc to o czym mowilem) Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 21, 2006 Zgłoś Share Napisano Czerwiec 21, 2006 Wrong. w delphi string to tablica dynamiczna typu char lub ansichar. w pierwszej komorce s[0] jest o ile sie nie myle dlugosc albo pointer na cos tam nie pamietam dokladnie specyfikacji, w paskalu w stringu moga byc znaki #0. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Czerwiec 21, 2006 Zgłoś Share Napisano Czerwiec 21, 2006 1. [quote] String to tablica znakow zakonczona znakiem o kodzie ascii 0. Jesli chcesz odczytac stringa to musisz odczytywac pokolei wszyskie bajty az trafisz na znak '0'. Kod w c# (nie powinienes miec problemow z przetlumaczeniem na object pascala - DELPHI TO NIE JEZYK PROGRAMOWANIA!! ). [/quote]Bodajze od Delphi4 Delphi to jest jezyk programowania.2. Pamięc działa troszke inaczej. pamięć to taka wielka tablica ktora wyglada mniejwiecej takF0 E0 00 30 56 6000 40 50 00 00 00...i jesli odczytujemy to jako int to niejako laczymy te komórki i powstaje nam liczba np. jak zczytujemy wartosc int z pierwszych 2 komórek dostajemy F0E0 (hex)a jesli zczytujemy to jako string to kazda komurka jest zamieniana na znak graficzny char i pokolei dodawana do naszej zmiennej.3. Tak dla niewtajemniczonych "nazwa_procesu" to jest ta nazwa ktora widziecie w menedżerze zadań windy (alt+ctrl+delete), wiec Rav dobrze ci sie wydaje :> "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
raV Napisano Czerwiec 21, 2006 Zgłoś Share Napisano Czerwiec 21, 2006 jak robie FindWindow('notepad', nil); to jest okej, a jak robie FindWindow(PChar(operacje na jakichs stringach), nil); to juz nie dziala.. fajniepoza tym kod filuu zwraca zawsze tę samą liczbę... a jak probowalem stringi to hoho ;d Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.