Strona 1 z 1

Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 26 paź 2011, 21:35
autor: tommmmmm
Powiedzmy, że jest o taki prosty kod w c++

Kod: Zaznacz cały

void WriteToXYZ(bool on) {
	DWORD address = 0x00961B6C;
	unsigned char fgmOn[8] = "\x0F\x94";
	unsigned char fgmOff[8] = "\x0F\x95";
	HWND XYZwindow = FindWindow(0, "XYZ");
	if (XYZwindow == 0) {
		MessageBox(0, "Cannot find XYZ open", "XYZ Writer", 0);
		ExitProcess(0);
	} else {
		DWORD pID;
		GetWindowThreadProcessId(XYZwindow, &pID);
		HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
		if (on) {
			WriteProcessMemory(hProc, (LPVOID)address, fgmOn, 2, NULL);
		} else {
			WriteProcessMemory(hProc, (LPVOID)address, fgmOff, 2, NULL);
		}
	}
}
I się zastanawiałem jak to zapisać w Javie. Bo googluje googluje i jakoś nie mogę tego wygooglować.

Re: Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 26 paź 2011, 22:38
autor: beluosus
Spróbuj użyć Java Native Access (lub Java Native Interface).

Re: Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 17 gru 2011, 22:01
autor: TJB
Z ciekawości, dlaczego chcesz pisać do pamięci programów za pomocą Javy?

Re: Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 17 gru 2011, 22:10
autor: tommmmmm
TJB pisze:Z ciekawości, dlaczego chcesz pisać do pamięci programów za pomocą Javy?
mimo iż minęło już 3 miechy od ostatniej odpowiedzi, mimo wszystko postaram się odpowiedzieć na bieżąco:

Ponieważ autohotkey może automatyzować tylko jeden proces na raz. A jeśli chce się wykonać dobry bug test to miłoby było wykonywać kilkanaście testów na raz. A po drugie - wszelkiego typu boty do wszelkiego typu zadań - lepiej działają gdy się je zapuści wielokrotnie niż pojedynczo.

A dlaczego za pomocą Javy? Ano dlatego że moi wykładowcy na studiach bardzo mocno mnie zrazili (uraz psychiczny) do smalltalka, fortranu, i C/C++/pochodnych. Więc zostaje mi Java.

Re: Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 17 gru 2011, 23:34
autor: TJB
Dzięki za błysk-odpowiedź mimo wykopania wątku z poprzedniej pory roku :-) Przyznaję, mimo czasu chciałem zapytać. Zaintrygował mnie wybór Javy do takiego zadania. Jak pisano ten język celowo zrezygnowano ze wskaźników by nie było zabiegów z pamięcią.

Nie chciałbyś spróbować zrobić tego jakimś Perlem / Pythonem?

Re: Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 18 gru 2011, 07:23
autor: tommmmmm
Perl jest jak grep w bashu - jedna wielka ciapanina znaczków, którą zapomina się co znaczy po tygodniu... a odkodowanie tego to lepiej nie mówić.

A co do pythona - ten język wydaje mi się jakoś mało popularny/mało rozbudowany. Jeszcze nigdy się nim nie interesowałem.

Re: Pisanie do pamięci programów za pomocą Javy. Jak to zrobić?

: 18 gru 2011, 12:58
autor: TJB
Ad Perl: to częsty pogląd, który jest często prawdą. Ale można w Perlu napisać dobry (w znaczeniu: czytelny) kod. Można też pisać Perla obiektowego. No i ilość bibliotek jest wprost imponująca. A przy tym wydaje mi się, że zastosowania Perla czynią go lepszym do pisania do pamięci niż Java - ale nie mam zamiaru jakoś szczególnie spierać się w tej kwestii.

Ad Python: żeby daleko nie szukać, weźmy aktualizacje Ubuntu. Co i rusz przewija się tam coś w Pythonie. To jeden powód, dla którego go zasugerowałem. Drugi to fakt, że widziałem paru gości piszących w Pythonie podczas Zlotu Koderów w marcu tego roku i robiło to wrażenie. Inna sprawa to fakt, że to byli dobrzy goście, zatem ich kod na pewno robił wrażenie. ;-)