Предполагая, что для сканирования памяти потребуется ассемблер
Есть только одно но, если программа под ДОС, то Вы должны находится в одном эмуляторе с игрушкой.
А какая операционная система на этом PSX?
... нужно Delphi или Free Pascal
Доступ к памяти чужого процесса, например, в Windows, можно получить с помощью функций Win32 API.
... посмотрите в сторону зарезервированного слова absolute
Это всё элементарно делается средствами самого ТР с помощью указателей
Я не совсем понимаю о чем речь. Эмулятор для винды (ХР) 32бит
var
mas : byte absolute $9C:$F26E;
begin
writeln(mas);
readln;
end.
В защищенном режиме, нужно использовать Нативные(ядерные) функции самой системы, по другому никак.
Для этого Вам нужно изучить организацию работы с памятью самой операционной системы.
Как запускается игрушка и "Шо" это есть?
Что Вы хотите получить в итоге?
... неужели не интереснее понять, какую логику, алгоритм выигрыша заложили авторы в свою программу
пока кто-то из нас не установит ее у себя и не посчитает за труд 2-3 дня, а то и больше, потратить на изучение памяти программы...
... или по другому: БУДЕТ ОЧЕНЬ БОЛЬНО
var
mas: farpointer;
begin
mas:= ptr($9c, $f26e);
WriteLn(byte(mas^));
end.
var
mas: farpointer;
begin
mas:= ptr(0, $6e);
WriteLn(byte(mas^));
end.
Сразу отмечу, что если я прав, то многовато Вам изучать еще надо ...
... используется какая-то PlayStation... разбираться будет хлопотно
Ну бить-то - руки коротки, а эмулятора для Интернета еще не создали![]()
у Вас появился стимул начать программировать
пишите хоть тут, хоть в личную почту
const
msg: String = '1234567890';
var
mas: String;
begin
move(msg, mas, length(msg)+1);
WriteLn(mas);
end.
Исходя из текущего положения дел, сочту за положительный ответ ассемблерную вставку следующего смысла - "Скопировать побайтно 630 байт из памяти началом в адресе ХХХХ:ХХХХ в память с адресом УУУУ:УУУУ"
push si
push di
push ds
cld
mov cx,[byte_count]
lds si,[source_addr]
les di,[destination_addr]
rep movsb
pop ds
pop di
pop si
а) ArtMoney показывает, что в приведенной однобайтной памяти (009СF26E) ...
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPCVOID lpBuffer, // data buffer
SIZE_T nSize, // count of bytes to write
SIZE_T * lpNumberOfBytesWritten // count of bytes written
);
BOOL ReadProcessMemory(
HANDLE hProcess, // handle to the process
LPCVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
SIZE_T nSize, // number of bytes to read
SIZE_T * lpNumberOfBytesRead // number of bytes read
);
а) ArtMoney показывает, что в приведенной однобайтной памяти (009СF26E) ...
BOOL ReadProcessMemory(
HANDLE hProcess, // handle to the process
LPCVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
SIZE_T nSize, // number of bytes to read
SIZE_T * lpNumberOfBytesRead // number of bytes read
);
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPCVOID lpBuffer, // data buffer
SIZE_T nSize, // count of bytes to write
SIZE_T * lpNumberOfBytesWritten // count of bytes written
);
program test;
{$X+} { расширенный синтаксис }
const
s : string = '1234567890';
al: array[0..5] of longint = ( 1234, 5678, 90123, 45678, 901234, 567890 );
var
pc : ^char;
pl : ^longint;
i : integer;
begin
pc := @s[1];
for i := 0 to 5 do begin
write( pc^, ' ' );
inc( pc ); { к следующему символу строки }
end;
writeln;
pl := @al[0];
for i := 0 to 5 do begin
write( pl^, ' ' );
inc( pl ); { к следующему элементу массива }
end;
writeln;
end.
Такой ответ Вам подходит?
могли бы вы подсказать что необходимо вводить в каждый передаваемый данным функциям параметр (как их задействовать).
Послал Вам тестовое письмо с моего ящика "тут"[q=]
Что-что хочешь тут сделать?![]()
![]()
Следующий 16-битный код копирует byte_count байт из source_addr в destination_addr (это можно сделать и чисто на Паскале)
Что-то это код мне ассемблер напоминает
ассемблерную вставку следующего смысла - "Скопировать побайтно 630 байт из памяти началом в адресе ХХХХ:ХХХХ в память с адресом УУУУ:УУУУ"
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.