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

Как записать скрипт с развернутыми указателями структур


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

Всем Привет. Такая Проблема, никак не получается создать скрипт с идентификатором игрока при открытии нескольких указателей в структуре игрока. Вот скрипт:

push ecx
mov ecx,dword ptr [edx+40] - указатель
mov ecx, dword ptr [edx+b4] - указатель
cmp dword ptr [ecx+30],1   // Как правильно записать число 1 что бы скрипт работал Правильно ? Ecx+30 Находится в подструктуре указателя Edx+b4
pop ecx

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

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

Если такой указатель [[[edx+40] + b4] + 30] , то :

 


push ecx
mov ecx, dword ptr [edx+40]
mov ecx, dword ptr [ecx+b4] 
cmp [ecx+30],1
pop ecx

 

Хотя лучше выложи полный АА листинг

Если записать его так  то он РАБОТАЕТ ПРАВИЛЬНО

 

push ecx

mov ecx,dword ptr [edx+40] - указатель
cmp byte ptr [ecx+b4] ,0
pop ecx 

 

Но как записать скрипт далее если сделать развертывание "b4",  то есть продолжить скрипт. Как указать правильное смещение От [ecx+b4] на [ecx +30] ?

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

Ну например если мы будем записывать 1 в В4 по смещению 30 с развернутой структуры В4 то это будет выглядеть так примерно

 

push ecx
mov ecx,[edx+40]
mov ecx,[edx+b4] 
cmp ecx,edx
pop ecx
mov dword ptr [ecx+30],#1 -- Записываем 1 или 100 - 1000 по желанию

Да и ты уточнил бы записать тебе надо или сравнить свой-чужой

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

5 минут назад, Жажда Знаний сказал:

Подскажи, как Спойлером пользоваться? Скрывать

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

VBv5HD7.png

 

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

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

aobscan(Test,8B 42 28 83 F8 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:

push ecx
mov ecx, dword ptr [edx+40]
mov ecx, dword ptr [edx+b4]
cmp dword ptr [ecx+30],1
pop ecx
jne @f
 mov [edx+28],#20


@@:
  mov eax,[edx+28]
  cmp eax,00
  jmp return

Test:
  jmp newmem
  nop
return:
registersymbol(Test)

[DISABLE]

Test:
  db 8B 42 28 83 F8 00

unregistersymbol(Test)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 0A582204

""+A5821E1: 83 C4 10           -  add esp,10
""+A5821E4: 8B 4D E4           -  mov ecx,[ebp-1C]
""+A5821E7: 85 C0              -  test eax,eax
""+A5821E9: 75 2F              -  jne 0A58221A
""+A5821EB: 8B 4D E0           -  mov ecx,[ebp-20]
""+A5821EE: 8D 89 A0 00 00 00  -  lea ecx,[ecx+000000A0]
""+A5821F4: 8D 55 F0           -  lea edx,[ebp-10]
""+A5821F7: E8 03 FF E0 4E     -  call "Adobe AIR.dll"+4E20FF
""+A5821FC: 8B 55 E4           -  mov edx,[ebp-1C]
""+A5821FF: B9 00 00 00 00     -  mov ecx,00000000
// ---------- INJECTING HERE ----------
""+A582204: 8B 42 28           -  mov eax,[edx+28]
""+A582207: 83 F8 00           -  cmp eax,00
// ---------- DONE INJECTING  ----------
""+A58220A: 0F 4E C1           -  cmovle eax,ecx
""+A58220D: 8B 4D F0           -  mov ecx,[ebp-10]
""+A582210: 89 0D 54 B0 32 03  -  mov [0332B054],ecx
""+A582216: 8B E5              -  mov esp,ebp
""+A582218: 5D                 -  pop ebp
""+A582219: C3                 -  ret 
""+A58221A: 8B 41 28           -  mov eax,[ecx+28]
""+A58221D: 8B 4D F0           -  mov ecx,[ebp-10]
""+A582220: 89 0D 54 B0 32 03  -  mov [0332B054],ecx
""+A582226: 8B E5              -  mov esp,ebp
}

 

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

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

[ENABLE]
aobscan(Test,8B 42 28 83 F8 00) // should be unique
alloc(newmem,$1000)
registersymbol(Test)
label(code)
label(return)
newmem:
push ecx
mov ecx, dword ptr [edx+40]
mov ecx, dword ptr [edx+b4]
cmp dword ptr [ecx+30],1
cmp ecx,edx
jne @f
mov [edx+28],#20
jmp code
@@:
mov eax,[edx+28]
code:
  pop ecx
  mov eax,[edx+28]
  cmp eax,00
  jmp return
Test:
  jmp newmem
  nop
return:

registersymbol(Test)
[DISABLE]
Test:
  db 8B 42 28 83 F8 00
unregistersymbol(Test)
dealloc(newmem)

 

Исправил там code лишний стоял, проверь

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

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

[ENABLE]
aobscan(Test,8B 42 28 83 F8 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)

newmem:
code:
push ecx
mov ecx, dword ptr [edx+40]
mov ecx, dword ptr [edx+b4]
cmp dword ptr [ecx+30],1
pop ecx
jne @f
 mov [edx+28],#20

@@:
  mov eax,[edx+28]
  cmp eax,00
  jmp return
  
Test:
  jmp code  -- Вот тут у тебя прыжок был на newmem, но ты то записывал в code. Поправил проверь
  nop
return:
registersymbol(Test)
  
[DISABLE]
Test:
  db 8B 42 28 83 F8 00
unregistersymbol(Test)
dealloc(newmem)

 

 

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

Сразу вылет Происходит при Активации. Что ж такое придумать еще. GlobalAlloc на это влияет?

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

Фильтр стоит такой как показывает структура, погляди скрин, на b4 она работает далее при развертывании уже уже ничего не считывается

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

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

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

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