Перейти к содержанию

[Need For Speed Underground 2] Функция телепорта


Рекомендуемые сообщения

Доброго времени суток форумчане, написал вот такой скрипт (логи присутствуют)

Скрытый текст

[ENABLE]
aobscanmodule(INJECT, speed2.exe,D9 5E F0 D9 84 24 4C 02 00 00)
alloc(newmem,$1000)
alloc(pos, 12)

label(position_flag)
registersymbol(position_flag)

label(store)
registersymbol(store)

label(restore)
registersymbol(restore)

label(code)
label(return)

store:
  push eax
  mov eax, [pos+0]
  mov [esi-0c], eax
  mov eax, [pos+8]
  mov [esi-08], eax
  mov eax, [pos+4]
  mov [esi-04], eax
  pop eax

restore:
  push eax
  mov eax, [esi-0c]
  mov [pos+0], eax
  mov eax, [esi-08]
  mov [pos+8], eax
  mov eax, [esi-04]
  mov [pos+4], eax
  pop eax

newmem:
  fstp dword ptr [esi-10]
  cmp byte ptr [position_flag], 0
  je store
  jmp restore
  jmp store
code:
  fld dword ptr [esp+0000024C]
  jmp return
position_flag:
  db 0
  jmp newmem

INJECT:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db D9 5E F0 D9 84 24 4C 02 00 00
unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED

"speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
"speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
"speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
"speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
"speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
"speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
"speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
"speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
"speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
// ---------- INJECTING HERE ----------
"speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
"speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
// ---------- DONE INJECTING  ----------
"speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
"speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
"speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
"speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
"speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
"speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
"speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
"speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
}

 

 

Цель скрипта, сохранение, восстановление позиции машины по флагу, если смотреть на видеоурок под спойлером

Скрытый текст

 

То во первых почему то крОшится игра, а во вторых не выделяется память под position_flag, т.е я не могу вывести адрес в список адресов что бы там задать ему флаг.

Ссылка на комментарий
Поделиться на другие сайты

1. На будущее имя метки ( INJECT ) не должно повторяться.

2. Убери прыжок

position_flag:
  db 0
  jmp newmem

3. В блоке [DISABLE] так же пропиши все зарегистрированные метки. ( unregistersymbol(XXX) )

4.У тебя код ни когда не вернется в оригинальную часть.
5. Примерно так. 1 сохранить 2 восстановить. ( Что у тебя такое pos и что там лежит? ). И да по коду ничего не ясно. Store по факту ты записываешь в [esi-0c] значение из [pos+0]. А в Restore ты ты записываешь [esi-0c] в [pos+0]. 

Скрытый текст

[ENABLE]
aobscanmodule(INJECT, speed2.exe,D9 5E F0 D9 84 24 4C 02 00 00)
alloc(newmem,$1000)
alloc(pos, 12)
label(code)
label(return)
//--
label(store)
label(restore)
label(position_flag)
registersymbol(position_flag)

newmem:
  fstp dword ptr [esi-10]
  cmp byte ptr [position_flag], 1
  je store
  cmp byte ptr [position_flag], 2
  je restore
  jmp code
store:
  push eax
  mov eax, [pos+0]
  mov [esi-0c], eax
  mov eax, [pos+8]
  mov [esi-08], eax
  mov eax, [pos+4]
  mov [esi-04], eax
  pop eax
  jmp code
restore:
  cmp [esi-0c],(float)0
  je code
  push eax
  mov eax, [esi-0c]
  mov [pos+0], eax
  mov eax, [esi-08]
  mov [pos+8], eax
  mov eax, [esi-04]
  mov [pos+4], eax
  pop eax
code:
  fld dword ptr [esp+0000024C]
  jmp return
  
position_flag:
  db 0

INJECT:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
INJECT:
  db D9 5E F0 D9 84 24 4C 02 00 00
unregistersymbol(INJECT)
unregistersymbol(position_flag)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED

"speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
"speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
"speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
"speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
"speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
"speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
"speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
"speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
"speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
// ---------- INJECTING HERE ----------
"speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
"speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
// ---------- DONE INJECTING  ----------
"speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
"speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
"speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
"speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
"speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
"speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
"speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
"speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
}

 

6. Ты пишешь в EAX а свободен он иль нет? Делай через fld fstp

fld dword ptr [esi-0c] // К примеру тут твоя координата текущая
fstp dword ptr [MyPX] // Запишется в MyPX
// Поменяв буковки местами получим обратное из MyPX запишем в esi-0c.

7. Инструкция работает не только с тобой.

 

( Но это не точно ).
 

Ссылка на комментарий
Поделиться на другие сайты

57 минут назад, ReWanet сказал:

( INJECT ) не должно повторяться.

О_о а где оно повторяется то?

 

57 минут назад, ReWanet сказал:

Убери прыжок

убрал, кстати почему?

как вообще происходит выполнение кода, ведь нет нигде указания что нужно зайти в метку pflag, и выполнить db 0

 

57 минут назад, ReWanet сказал:

В блоке [DISABLE]

Прописал

57 минут назад, ReWanet сказал:

У тебя код ни когда не вернется в оригинальную часть.

Вот да, я в это и впоролся, и приходится пока ручками восстанавливать инструкцию, не понимаю почему после выполнения своих действий, он не восстанавливает по нажатию мои собственные инструкции

 

57 минут назад, ReWanet сказал:

по факту ты записываешь

Имена меток попутал restore -> store, store -> restore

 

57 минут назад, ReWanet сказал:

EAX а свободен он иль нет

Посмотрел в бряке регистры, был занят, сделал через fld, fstp, хоть понял как это теперь работает

57 минут назад, ReWanet сказал:

Инструкция работает не только с тобой.

Инструкция пересчитывает на самом деле много адресов

 

Привожу ниже текущий код.

 

Скрытый текст

[ENABLE]
aobscanmodule(INJECT, speed2.exe, D9 5E F0 D9 84 24 4C 02 00 00)
alloc(newmem, $1000)
alloc(pos, 12)

label(pflag)
label(store)
label(restore)
label(code)
label(return)

registersymbol(pflag)
registersymbol(store)
registersymbol(restore)

store:
  fld dword ptr [esi-0c]
  fstp dword ptr [pos+0]
  fld dword ptr [esi-08]
  fstp dword ptr [pos+8]
  fld dword ptr [esi-04]
  fstp dword ptr [pos+4]

restore:
  fld dword ptr [pos+0]
  fstp dword ptr [esi-0c]
  fld dword ptr [pos+8]
  fstp dword ptr [esi-08]
  fld dword ptr [pos+4]
  fstp dword ptr [esi-04]

newmem:
  fstp dword ptr [esi-10]
  cmp byte ptr [pflag], 0
  je store
  jne restore
code:
  fld dword ptr [esp+0000024C]
  jmp return

pflag:
  db 3

INJECT:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
INJECT:
  db D9 5E F0 D9 84 24 4C 02 00 00
unregistersymbol(store)
unregistersymbol(restore)
unregistersymbol(pflag)
unregistersymbol(INJECT)

dealloc(pos)
dealloc(newmem)


{
// ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED

"speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
"speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
"speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
"speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
"speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
"speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
"speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
"speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
"speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
// ---------- INJECTING HERE ----------
"speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
"speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
// ---------- DONE INJECTING  ----------
"speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
"speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
"speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
"speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
"speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
"speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
"speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
"speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
}

 

 

Изменено пользователем CHBS
Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, CHBS сказал:

а где оно повторяется то?

Смотри на все предложение. Приписка на будущее говорит о чем-то но о чем я не знаю..
 

4 минуты назад, CHBS сказал:

Инструкция пересчитывает на самом деле много адресов

Вылеты как раз из-за этого скорее. Тебе нужно фильтровать или искать инструкцию которая будет работать только с тобой.

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, ReWanet сказал:

Приписка на будущее

Когда я писал, ее не было просто, сообщение отредактировано ведь

 

1 минуту назад, ReWanet сказал:

Вылеты как раз из-за этого скорее.

Вылета как такового вроде бы и нет, я не могу это проверить, потому что скрипт работает явно не стабильно, дело в том что когда я включаю скрипт, на нем вешается крестик, но в моем случае крестика нету, и я получается не могу обратно восстановить инструкцию, и немогу понять почему крест не вешается и инструкция не восстанавливается

Ссылка на комментарий
Поделиться на другие сайты

15 минут назад, CHBS сказал:

Когда я писал, ее не было просто

Была ) Отредактировано из-за по причине добавления 7 пункта.

Я тебе пример скрипта скидывал по нему и сделай.
Не активируется по причине:
1. Метки Store Restore выше newmem ( 100% не ручаюсь влияет это иль нет но вроде да )
2. Опять же у тебя код ни когда не вернется в оригинальную инструкцию..
 

Скрытый текст

store:						// перешли сюда
  fld dword ptr [esi-0c]	// выполнили что-то тут
  fstp dword ptr [pos+0]
  fld dword ptr [esi-08]
  fstp dword ptr [pos+8]
  fld dword ptr [esi-04]
  fstp dword ptr [pos+4]	// конец и.. идем дальш ибо ни какого перехода нету

restore:					// сразу же восстанавливаем значения
  fld dword ptr [pos+0]
  fstp dword ptr [esi-0c]
  fld dword ptr [pos+8]
  fstp dword ptr [esi-08]
  fld dword ptr [pos+4]
  fstp dword ptr [esi-04]	// конец и... идем дальше ибо ни какого перехода нету
							// возвращаемся в метку newmem т.е. более в орЭгами не вернемся.
newmem:
  fstp dword ptr [esi-10]	// Это для чего тут
  cmp byte ptr [pflag], 0   // Смотри мы получаем следующий аругемент если pflag = 0 то идем в store т.к. флаг ниже записан как 3 то он не равен 0 и мы 
  je store					// идем дальше по коду.
  jne restore				// Что сверяет - ??? идем дальше
code:
  fld dword ptr [esp+0000024C]	// выходим в орЭгами
  jmp return					// возвращамся в код	-- запишем в pflag 0 и перейдем к метке store

pflag:
  db 3

 

Ну и регистрация меток store и restore ( registersymbol ) не нужна.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

@ReWanet, спасибо большое, проблема решена, нужно было сместить restore, store вниз, непонятно почему так

 

 

Код

Скрытый текст

[ENABLE]
aobscanmodule(INJECT, speed2.exe, D9 5E F0 D9 84 24 4C 02 00 00)
alloc(newmem, $1000)
alloc(pos, 12)

label(pflag)
label(store)
label(restore)
label(code)
label(return)
registersymbol(pflag)

store:
  fld dword ptr [esi-0c]
  fstp dword ptr [pos+0]
  fld dword ptr [esi-08]
  fstp dword ptr [pos+8]
  fld dword ptr [esi-04]
  fstp dword ptr [pos+4]

restore:
  fld dword ptr [pos+0]
  fstp dword ptr [esi-0c]
  fld dword ptr [pos+8]
  fstp dword ptr [esi-08]
  fld dword ptr [pos+4]
  fstp dword ptr [esi-04]

newmem:
  fstp dword ptr [esi-10]
  cmp byte ptr [pflag], 0
  je store
  jne restore
code:
  fld dword ptr [esp+0000024C]
  jmp return

pflag:
  db 3

INJECT:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(INJECT)



[DISABLE]
INJECT:
  db D9 5E F0 D9 84 24 4C 02 00 00
unregistersymbol(store)
unregistersymbol(restore)
unregistersymbol(pflag)
unregistersymbol(INJECT)

dealloc(pos)
dealloc(newmem)


{
// ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED

"speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
"speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
"speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
"speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
"speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
"speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
"speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
"speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
"speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
// ---------- INJECTING HERE ----------
"speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
"speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
// ---------- DONE INJECTING  ----------
"speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
"speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
"speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
"speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
"speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
"speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
"speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
"speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

Не могу редактировать.

 

Вообщем проблема странная, будто pos обнуляется, т.е первые раз я сохраняю позицию, выполняя метку store:
далее я проезжаю сколько то метров, выполняю метку restore: меня телепортирует, а если проехать например пару сотен метров, то pos вовсе будет держать в себе значения рандомного флоата, например моя настоящая позиция

x = 3000, y = -2000, z = 200

в posX = 1.3141431413E+4, posY = 2.13123123123E+4, posZ = 0.31413413413

Не могу понять почему так происходит, вроде pos не должен записываться пока я не выполню метку store, все выполняется по клавишам

Скрытый текст

[ENABLE]
aobscanmodule(INJECT, speed2.exe, D9 5E F0 D9 84 24 4C 02 00 00)
alloc(newmem, $1000)
alloc(pos, 12)

label(pflag)
label(store)
label(restore)
label(code)
label(return)
registersymbol(pflag)


newmem:
  cmp byte ptr [pflag], 0
  je store
  cmp byte ptr [pflag], 1
  je restore
code:
  fstp dword ptr [esi-10]
  fld dword ptr [esp+0000024C]
  jmp return

pflag:
  db 3

store:
  fld dword ptr [esi-0C]
  fstp dword ptr [pos+0]

  fld dword ptr [esi-08]
  fstp dword ptr [pos+8]

  fld dword ptr [esi-04]
  fstp dword ptr [pos+4]

  mov byte ptr [pflag], 3
  jmp code

restore:
  fld dword ptr [pos+0]
  fstp dword ptr [esi-0c]

  fld dword ptr [pos+8]
  fstp dword ptr [esi-08]

  fld dword ptr [pos+4]
  fstp dword ptr [esi-04]

  mov byte ptr [pflag], 3
  jmp code

INJECT:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(INJECT)



[DISABLE]
INJECT:
  db D9 5E F0 D9 84 24 4C 02 00 00
unregistersymbol(store)
unregistersymbol(restore)
unregistersymbol(pflag)
unregistersymbol(INJECT)

dealloc(pos)
dealloc(newmem)


{
// ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED

"speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
"speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
"speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
"speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
"speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
"speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
"speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
"speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
"speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
// ---------- INJECTING HERE ----------
"speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
"speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
// ---------- DONE INJECTING  ----------
"speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
"speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
"speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
"speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
"speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
"speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
"speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
"speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
"speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
}

 

 

 

Ссылка на комментарий
Поделиться на другие сайты

 

Рабочий

Скрытый текст

 


[ENABLE]
aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
alloc(newmem,$1000)
globalalloc(pflag, 1)
globalalloc(pos, 18)

label(code)
label(return)

label(pflag)
registersymbol(pflag)
label(pos)
registersymbol(pos)
label(store)
registersymbol(store)
label(restore)
registersymbol(restore)

newmem:
  cmp byte ptr [pflag], 1
  je store
  cmp byte ptr [pflag], 2
  je restore

code:
  fld dword ptr [eax+28]
  add eax,30
  jmp return

store:
  fld dword ptr [eax+20]
  fstp dword ptr [pos+0]

  fld dword ptr [eax+24]
  fstp dword ptr [pos+04]

  fld dword ptr [eax+28]
  fstp dword ptr [pos+08]

  fld dword ptr [eax+30]
  fstp dword ptr [pos+10]

  fld dword ptr [eax+34]
  fstp dword ptr [pos+14]

  fld dword ptr [eax+38]
  fstp dword ptr [pos+18]

  mov dword ptr [pflag], 3
  jmp code

restore:
  fld dword ptr [pos+0]
  fstp dword ptr [eax+20]

  fld dword ptr [pos+04]
  fstp dword ptr [eax+24]

  fld dword ptr [pos+08]
  fstp dword ptr [eax+28]

  fld dword ptr [pos+10]
  fstp dword ptr [eax+30]

  fld dword ptr [pos+14]
  fstp dword ptr [eax+34]

  fld dword ptr [pos+18]
  fstp dword ptr [eax+38]
  mov dword ptr [pflag], 3
  jmp code

pflag:
  dd 3
pos:
  db 00000000 00000000 00000000




INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)



[DISABLE]

INJECT:
  db D9 40 28 83 C0 30
unregistersymbol(pflag)
unregistersymbol(pos)
unregistersymbol(store)
unregistersymbol(restore)
unregistersymbol(INJECT)
dealloc(pflag)
dealloc(pos)

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489

"SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
"SPEED2.EXE"+1A8466: 51                             -  push ecx
"SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
"SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
"SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
"SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
"SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
"SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
"SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
"SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
// ---------- INJECTING HERE ----------
"SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
"SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
// ---------- DONE INJECTING  ----------
"SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
"SPEED2.EXE"+1A8493: 50                             -  push eax
"SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
"SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
"SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
"SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
"SPEED2.EXE"+1A84A2: 50                             -  push eax
"SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
"SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
"SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
}

 

 

Не рабочий

Скрытый текст

[ENABLE]
aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
alloc(newmem,$1000)
globalalloc(pos, 18)
alloc(pflag, 1)

registersymbol(pflag)
registersymbol(pos)
registersymbol(store)
registersymbol(restore)

label(pflag)
label(pos)
label(store)
label(restore)
label(code)
label(return)

newmem:
  cmp byte ptr [pflag], 1
  je store
  cmp byte ptr [pflag], 2
  je restore

code:
  fld dword ptr [eax+28]
  add eax,30
  jmp return

store:
  fld dword ptr [eax+20]
  fstp dword ptr [pos+0]

  fld dword ptr [eax+24]
  fstp dword ptr [pos+04]

  fld dword ptr [eax+28]
  fstp dword ptr [pos+08]

  fld dword ptr [eax+30]
  fstp dword ptr [pos+10]

  fld dword ptr [eax+34]
  fstp dword ptr [pos+14]

  fld dword ptr [eax+38]
  fstp dword ptr [pos+18]

  mov dword ptr [pflag], 3
  jmp code

restore:
  fld dword ptr [pos+0]
  fstp dword ptr [eax+20]

  fld dword ptr [pos+04]
  fstp dword ptr [eax+24]

  fld dword ptr [pos+08]
  fstp dword ptr [eax+28]

  fld dword ptr [pos+10]
  fstp dword ptr [eax+30]

  fld dword ptr [pos+14]
  fstp dword ptr [eax+34]

  fld dword ptr [pos+18]
  fstp dword ptr [eax+38]
  mov dword ptr [pflag], 3
  jmp code

pflag:
  dd 3
pos:
  db 00000000 00000000 00000000




INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)



[DISABLE]

INJECT:
  db D9 40 28 83 C0 30
unregistersymbol(pflag)
unregistersymbol(pos)
unregistersymbol(store)
unregistersymbol(restore)
unregistersymbol(INJECT)
dealloc(pflag)
dealloc(pos)

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489

"SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
"SPEED2.EXE"+1A8466: 51                             -  push ecx
"SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
"SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
"SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
"SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
"SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
"SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
"SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
"SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
// ---------- INJECTING HERE ----------
"SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
"SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
// ---------- DONE INJECTING  ----------
"SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
"SPEED2.EXE"+1A8493: 50                             -  push eax
"SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
"SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
"SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
"SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
"SPEED2.EXE"+1A84A2: 50                             -  push eax
"SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
"SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
"SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
}

 

 

Изменено пользователем CHBS
Ссылка на комментарий
Поделиться на другие сайты

1. Тебе не нужен globalalloc и dealloc на pflag используй registersymbol и unregistersymbol
2. Зачем ( я устал это писать ) ты пишешь un \ registersymbol для store и restore?
3. Разницу между alloc и globalalloc можно найти тут globalAlloc alloc

Ссылка на комментарий
Поделиться на другие сайты

@ReWanetТак должно быть?

 

Скрытый текст

[ENABLE]
aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
alloc(newmem,$1000)
globalalloc(pos, 18)
alloc(pflag, 1)

registersymbol(pflag)
registersymbol(pos)

label(pflag)
label(pos)
label(store)
label(restore)
label(code)
label(return)

newmem:
  cmp byte ptr [pflag], 1
  je store
  cmp byte ptr [pflag], 2
  je restore

code:
  fld dword ptr [eax+28]
  add eax,30
  jmp return

store:
  fld dword ptr [eax+20]
  fstp dword ptr [pos+0]

  fld dword ptr [eax+24]
  fstp dword ptr [pos+04]

  fld dword ptr [eax+28]
  fstp dword ptr [pos+08]

  fld dword ptr [eax+30]
  fstp dword ptr [pos+10]

  fld dword ptr [eax+34]
  fstp dword ptr [pos+14]

  fld dword ptr [eax+38]
  fstp dword ptr [pos+18]

  mov dword ptr [pflag], 3
  jmp code

restore:
  fld dword ptr [pos+0]
  fstp dword ptr [eax+20]

  fld dword ptr [pos+04]
  fstp dword ptr [eax+24]

  fld dword ptr [pos+08]
  fstp dword ptr [eax+28]

  fld dword ptr [pos+10]
  fstp dword ptr [eax+30]

  fld dword ptr [pos+14]
  fstp dword ptr [eax+34]

  fld dword ptr [pos+18]
  fstp dword ptr [eax+38]
  mov dword ptr [pflag], 3
  jmp code

pflag:
  dd 3
pos:
  db 00000000 00000000 00000000




INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)



[DISABLE]

INJECT:
  db D9 40 28 83 C0 30
unregistersymbol(pflag)
unregistersymbol(pos)
unregistersymbol(INJECT)
dealloc(pos)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489

"SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
"SPEED2.EXE"+1A8466: 51                             -  push ecx
"SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
"SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
"SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
"SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
"SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
"SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
"SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
"SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
// ---------- INJECTING HERE ----------
"SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
"SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
// ---------- DONE INJECTING  ----------
"SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
"SPEED2.EXE"+1A8493: 50                             -  push eax
"SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
"SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
"SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
"SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
"SPEED2.EXE"+1A84A2: 50                             -  push eax
"SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
"SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
"SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
}

 

 

Изменено пользователем CHBS
Ссылка на комментарий
Поделиться на другие сайты

46 минут назад, CHBS сказал:

Так должно быть?

Вот так:

Скрытый текст

[ENABLE]
aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
//-----//
label(pflag)
label(pos)
label(store)
label(restore)
registersymbol(pflag)
registersymbol(pos)
globalalloc(pos,24)

newmem:
  cmp byte ptr [pflag], 1
  je store
  cmp byte ptr [pflag], 2
  je restore
  jmp code
store:
  fld dword ptr [eax+20]
  fstp dword ptr [pos]
  fld dword ptr [eax+24]
  fstp dword ptr [pos+04]
  fld dword ptr [eax+28]
  fstp dword ptr [pos+08]
  fld dword ptr [eax+30]
  fstp dword ptr [pos+0C]
  fld dword ptr [eax+34]
  fstp dword ptr [pos+10]
  fld dword ptr [eax+38]
  fstp dword ptr [pos+14]
  mov dword ptr [pflag], 3
  jmp code
restore:
  cmp [pos],(float)0		// Не знаю где у тебя какая координата но подобное нужно чтоб не улететь в 0 координаты
  je @f
  fld dword ptr [pos]
  fstp dword ptr [eax+20]
  fld dword ptr [pos+04]
  fstp dword ptr [eax+24]
  fld dword ptr [pos+08]
  fstp dword ptr [eax+28]
  fld dword ptr [pos+0С]
  fstp dword ptr [eax+30]
  fld dword ptr [pos+10]
  fstp dword ptr [eax+34]
  fld dword ptr [pos+14]
  fstp dword ptr [eax+38]
  mov dword ptr [pflag], 3
  jmp code
@:
  mov dword ptr [pflag], 3
code:
  fld dword ptr [eax+28]
  add eax,30
  jmp return
pflag:
  dd 3
pos:
  db 00000000 00000000 00000000 00000000 00000000 00000000

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]
INJECT:
  db D9 40 28 83 C0 30
unregistersymbol(INJECT)
unregistersymbol(pflag)
unregistersymbol(pos)
dealloc(newmem)
dealloc(pos)

{
// ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489

"SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
"SPEED2.EXE"+1A8466: 51                             -  push ecx
"SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
"SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
"SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
"SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
"SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
"SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
"SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
"SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
// ---------- INJECTING HERE ----------
"SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
"SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
// ---------- DONE INJECTING  ----------
"SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
"SPEED2.EXE"+1A8493: 50                             -  push eax
"SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
"SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
"SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
"SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
"SPEED2.EXE"+1A84A2: 50                             -  push eax
"SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
"SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
"SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
}

 

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, ReWanet сказал:

В реальность телепортирует )

Блин точно - не подумал. Да кстати одну машину его видел около Метро Октябрьское поле - Пронеслась с ревом и исчезла, Наверное обратный телепорт был задействован.

 

Ссылка на комментарий
Поделиться на другие сайты

 

10 часов назад, Garik66 сказал:

Пронеслась с ревом и исчезла, Наверное обратный телепорт был задействован.

Нет, она специальной штангой зацепилась за провод в момент удара молнии и стартанула назад в будущее )))

 

 

Ссылка на комментарий
Поделиться на другие сайты

33 минуты назад, Xipho сказал:

удара молнии

Не было спецэффектов (ни молний, ни огненных следов не было - я бы узнал сразу) - просто исчезла. Так что - всё-таки телепорт. :D

 

Ссылка на комментарий
Поделиться на другие сайты

 

6 часов назад, Garik66 сказал:

просто исчезла. Так что - всё-таки телепорт

Хм. Значит, все таки, новая версия машины времени ) Без эффектная ) 

 

 

Ссылка на комментарий
Поделиться на другие сайты

Ну юмористы xDDD

 

19 часов назад, Garik66 сказал:

у тебя 6-мерное пространство

Что-то типо того, я же в координаты должен засунуть еще и углы поворота машины, а потом восстановить как было))

Вопросов по телепорту не осталось, спасибо @ReWanet за оказанную помощь. объяснил что и как и к чему))

Изменено пользователем CHBS
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, CHBS сказал:

Вопросов по телепорту не осталось

Не осталось.

@CHBS, @Xipho, но мысль @ReWanet о телепорте в реальность очень понравилась. Симпсоны вспомнились, когда Гомер к нам попадает.:rolleyes:

 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, CHBS сказал:

Вопросов по телепорту не осталось

По телепорту у меня тоже есть несколько видео, вот посмотри (особенно про телепорт на много точек):

Dark Souls Prepare to Die Edition Script Teleport

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.