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

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

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

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

 

Собственно сам скрипт:

 

Спойлер

[ENABLE]
aobscan(Inf.Item,48 63 40 18 85 C0 7E 07 B8) // should be unique
alloc(newmem,$1000,0DF4F8DA)
registersymbol(Inf.Item)
label(code)
label(return)

newmem:
cmp [rax+10],00000017
jne code
mov [rax+18],#99
code:
  movsxd  rax,dword ptr [rax+18]
  test eax,eax
  jmp return

Inf.Item:
  jmp newmem
  nop
return:

[DISABLE]

Inf.Item:
  db 48 63 40 18 85 C0

unregistersymbol(Inf.Item)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 0DF4F8DA

0DF4F8AE: 0F 84 35 00 00 00              -  je 0DF4F8E9
0DF4F8B4: 48 8B 47 20                    -  mov rax,[rdi+20]
0DF4F8B8: 48 8B 40 20                    -  mov rax,[rax+20]
0DF4F8BC: 48 8B C8                       -  mov rcx,rax
0DF4F8BF: 49 8B D7                       -  mov rdx,r15
0DF4F8C2: 48 83 EC 20                    -  sub rsp,20
0DF4F8C6: 83 38 00                       -  cmp dword ptr [rax],00
0DF4F8C9: 49 BB 50 86 6C 04 00 00 00 00  -  mov r11,00000000046C8650
0DF4F8D3: 41 FF D3                       -  call r11
0DF4F8D6: 48 83 C4 20                    -  add rsp,20
// ---------- INJECTING HERE ----------
0DF4F8DA: 48 63 40 18                    -  movsxd  rax,dword ptr [rax+18]
0DF4F8DE: 85 C0                          -  test eax,eax
// ---------- DONE INJECTING  ----------
0DF4F8E0: 7E 07                          -  jle 0DF4F8E9
0DF4F8E2: B8 01 00 00 00                 -  mov eax,00000001
0DF4F8E7: EB 02                          -  jmp 0DF4F8EB
0DF4F8E9: 33 C0                          -  xor eax,eax
0DF4F8EB: 48 8D 65 E8                    -  lea rsp,[rbp-18]
0DF4F8EF: 41 5F                          -  pop r15
0DF4F8F1: 5F                             -  pop rdi
0DF4F8F2: 5E                             -  pop rsi
0DF4F8F3: C9                             -  leave 
0DF4F8F4: C3                             -  ret 
}

 

 

 

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

Ты можешь отреверсить функцию целиком, выяснить ее параметры запуска, в скрипте подготавливать эти параметры (распихать их в нужные места), и затем вызвать CreateThread на стартовый адрес этой функции.

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

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

Я читал эту тему, в примере с моим кодом как это сделать

Темы для того и создаются, что бы ты научился и потом мог применить знания для своих целей.

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

Только что, Hack сказал:

Найди другое место, где есть постоянный доступ к структуре!

Мне нужно знать как делать ВЫЗОВ ФУНКЦИИ. 

Я тему создал наверно не просто так.

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

Если у тебя в игре адреса появляются только при открытии инвентаря, то может там и список предметов динамически генерируется, и там много зависимых функций, возьми для начала что то простое, как в статье той.

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

Одно дело тема перечитана 100 раз, другое дело когда кто то может объяснить как это сделать.

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

я не гуру, иногда чтобы понять что то, нужно больше деталей.

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

В 20.03.2020 в 11:32, Xipho сказал:

Ты можешь отреверсить функцию целиком, выяснить ее параметры запуска, в скрипте подготавливать эти параметры (распихать их в нужные места), и затем вызвать CreateThread на стартовый адрес этой функции.

? Хипко ты как всегда, проще написать этот текст когда ты что-то знаешь и рубишь в этом.

А для меня твой ответ это ТЕМНЫЙ ЛЕС! ?

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

  • 2 недели спустя...
В 21.03.2020 в 19:22, Dison сказал:

Ребят кто поможет?

тебе уже написали как это сделать - считывай с других мест параметры для твоей функции, после чего вызывай её и передавай в неё эти параметры.

В 19.03.2020 в 18:47, Dison сказал:

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

если с вызовом функций сейчас не выходит разобраться, то попробуй сделать как-нибудь попроще. Например почему бы не считывать нужные данные именно при открытии инвентаря? Не так уж и сложно нажать одну лишнюю кнопку. Ну или при загрузке уровня или ещё как-нибудь. Вероятно также этот твой инвентарь не в вакууме существует и рядом с указателем на него может быть что-то ещё, к чему игра часто обращается?

 

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

15 часов назад, youneuoy сказал:

попробуй сделать как-нибудь попроще

Я хочу подробно понять как правильно написать скрипт вызов функции на основе моего с аобскан который я кинул в первом посту. 

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

12 часов назад, Dison сказал:

Я хочу подробно понять как правильно написать скрипт вызов функции на основе моего с аобскан который я кинул в первом посту. 

тебе уже дали всё, что для этого нужно? 

Простенький скрипт, что-то вроде этого в итоге будет и у тебя:

Спойлер

[ENABLE]

alloc(newmem,1024)
createthread(newmem)

newmem:
push всякое-разное
mov ecx,что-нибудь
call нужная функция
ret
[DISABLE]
dealloc(newmem)

 

 

Вот примерный список действий, которые тебе необходимо выполнить: 

1 - перечитать эту тему

2 - перечитать тему "Использование createthread (или война со стеком)"

3 - поискать ещё что-нибудь по этому поводу

4 - поставить бряк в начале твоей функции

5 - разобраться какие в неё передаются аргументы когда она делает то, что тебе нужно

6 - найти откуда бы тебе можно было бы эти параметры взять

7 - выполнить ещё раз первые  3 пункта инструкции

8 - вот тут ты по идее уже сможешь закончить сам?

 

 

Но мне кажется, что это не лучший вариант. Тебе все равно необходимо будет найти аргументы для функции(если конечно они ей нужны). А если это так, то вероятно ты сможешь получить нужную тебе информацию и без этого вызова? И это будет куда проще и удобнее.

 

Про это на форуме очень много написано. Ты или не видишь ничего, или не хочешь искать сам, или же вообще хочешь, чтобы всё сделали за тебя?

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

18 часов назад, Dison сказал:

Я хочу подробно понять как правильно написать скрипт вызов функции на основе моего с аобскан который я кинул в первом посту. 

На основе своего aobscan ты сможешь только найти инструкцию в теле какой-то функции/метода. Далее тебе нужно отреверсить всю эту функцию целиком, чтобы понять, какие параметры в нее передаются, и найти ее стартовый адрес. Ну и дальше тебе уже написали, все это есть на нашем форуме.

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

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

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

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