_asm
{
mov eax,[Ochki]
pop esi
mov esp,ebp
jmp dword ptr [RETURN_Addres_Solitaire]
}
Пробовал записать на Delphi так :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Addres_Solitaire,RETURN_Addres_Solitaire:dword;
begin
Addres_Solitaire:=$681B25;
RETURN_Addres_Solitaire:=Addres_Solitaire+6;
begin
asm
mov eax, [Addres_Solitaire]
pop esi
mov esp,ebp
jmp dword ptr [RETURN_Addres_Solitaire]
end;
end;
end;
Компилятор не кричит, но бьёт ошибку при нажатии кнопки :
[Ссылки могут видеть только зарегистрированные пользователи. ]
var
Addres_Solitaire:dword;
begin
Addres_Solitaire:=$681B25;
asm
mov eax, [Addres_Solitaire]
pop esi
mov esp, ebp
jmp dword ptr [eax+8]
end;
end;
И сразу тебе говорю. код работать нормально не будет, ибо надо перед тем, как тащить значение из стека, закинуть чего-то в него (push), перед тем, как писать ebp в esp, его надо инициализировать, и ещё желательно использовать pushad и popad. И да, я подозреваю, что +8 не единственное смещение и надо строить цепочку оффсетов побольше.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
var
Addres_Solitaire:dword;
begin
Addres_Solitaire:=$681B25;
asm
mov eax, [Addres_Solitaire]
pop esi
mov esp, ebp
jmp dword ptr [eax+8]
end;
end;
И сразу тебе говорю. код работать нормально не будет, ибо надо перед тем, как тащить значение из стека, закинуть чего-то в него (push), перед тем, как писать ebp в esp, его надо инициализировать, и ещё желательно использовать pushad и popad. И да, я подозреваю, что +8 не единственное смещение и надо строить цепочку оффсетов побольше.
Теперь другая ошибка )
[Ссылки могут видеть только зарегистрированные пользователи. ]
И сразу тебе говорю. код работать нормально не будет
Я же предупредил. Готовый код писать не буду. Пояснения дал более чем точные.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.