![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
Tooltip Exploit
Я нашёл ещё одну "лазейку" в варе) ну могу сразу сказать, что ничего не получится сделать :)
чисто теоретически мы можем читать из любой области памяти.. Как немногие знают, строки "Игрового интерфейса" работают по принципу printf
Тоесть туда передаются по очереди значения, которые подставляются в %s, %d, %x итп внутри строки. Не знаю, каким образом получилось так, что эти строки полностью поддерживают форматирование printf. С помощью этого я смог обратиться к ячейке памяти по номеру, равному уровню героя. Естественно вар скрашился.
Пока не знаю, как передать номер какой-либо ячейки динамически (без говнорб офк)
Проверял на отладчике, соответственно EAX содержит этот адрес и система убивает после cmp(ну там в недопустимом сегменте я так понял) :)
Проблема еще в том, что макс. уровень героя не может быть больше какого-то значения (ну точно меньше 0xFFFFFFFF), это дает дополнительные сложности.
Скрин и карта прилагаются. Отредактировано ScorpioT1001, 18.04.2010 в 21:25. |
![]() |
#1
+4/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
bee
vjass.optimizer
![]() ![]() offline
Опыт:
16,615Активность: |
честно говоря я не понимаю что это и для чего это нужно, но видимо что-то очень крутое
мне нравиться bee добавил: выбираю корову и у меня фатал |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FREEZE_ball
Cataclysm => жара
![]() ![]() offline
Опыт:
15,247Активность: |
Я понял, что это, и понял, для чего нужно.
Цитата:
Это очень и очень круто, на самом деле, но вот применить это на практике не удастся. Во всяком случае, я не вижу ни одного применения. Бтв, найти ячейку памяти может и артмани =\ |
|
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
FREEZE_ball, но не в игре :) тоесть без вмешательства стороннего и всяких ссаных ретурнбагов. и как я говорил там хрень с
|
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FREEZE_ball
Cataclysm => жара
![]() ![]() offline
Опыт:
15,247Активность: |
ScorpioT1001, твой способ, конечно же, прямо такой игровой =)
Я так думаю, можно попробовать написать некое чудо, чтобы меняло к чертям весь движок... Утопия... |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
XOR
![]() offline
Опыт:
38,159Активность: |
Попробуй с рб, если будет больше возможностей - можно использовать в крупных проектах=) |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
а смысл? в рб и так уже есть ретурн код, делай че хочешь |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
XOR
![]() offline
Опыт:
38,159Активность: |
Примеров нет, чтобы разобраться ^_^ |
![]() |
#8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
SRes
1110101000
![]() ![]() offline
Опыт:
9,997Активность: |
Толку от этого эксплоита ровно ноль, ведь можно обращаться только в пределах signed short, надо поковырять другие вызовы printf...
Да и что дает обращение ? Ведь на выходе мы не получаем ничего. |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Revion
![]() ![]() offline
Опыт:
483Активность: |
Ну хорошо, есть printf обращающийся к случайной памяти. Ну залезет он туда, попытается найти строчку. Может даже что она там и окажется и он что то да выведет. Или там окажутся какие то данные. Получил, вывел. А дальше что? 1 как ты собираешься считывать эти данные из того что вар вывел пользователю это раз. Во вторых от пользователя в идеале это нужно будет как то скрыть. Ну и даже если ты получишь эти данные что ты с ними будешь делать? В память то ты всё равно записать ничего не сможешь. Есть вариант использования этого всего - определять расположение в памяти определённых переменных или групп переменных, что может помочь при дисассемблинге. А в игре это использовать хз как.. Даже если ты узнаешь что адрес *имени игрока*, скажем, - такой-то, и даже постоянный на одной машине, не факт, что он будет такой же на другой. А если там вообще какой-нибудь sprintf_s используется, который длину строки ещё принимает, что тогда? |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
там есть ещё %n
ScorpioT1001 добавил:
|
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Revion
![]() ![]() offline
Опыт:
483Активность: |
Не понял сраказма.. Насколько мне известно в С стандарте вообще нет упоминания о %n. А вапще, компилятор вижуал студии на это говорит что 'n' format specifier disabled. Вар тихо валится если его использовать. |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ZeToX2007
![]() ![]() offline
Опыт:
7,009Активность: |
А я ковырялся над этим несколько лет назад, только с описанием способностей.
|
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
архибоянище, есть вполне джаз функция которой можно вытаскивать аргументы предыдущих функций, зовётся она DisplayTextFromPlayer() |
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
не видел такой) |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
native DisplayTimedTextFromPlayer takes player toPlayer, real x, real y, real duration, string message returns nothing
с этой функцией работают строковые параметры, можно узнать что за игрок передан параметром, время и прочие данные, возможно также вернуть параметры из предыдущей функции, но там крит 99%. |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
DioD, а если мы передадим duration как указатель на область памяти и заюзаем %s ?
ScorpioT1001 добавил: тока надо правильно преобразовать инт в флоат |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
пока работал ретурн баг можно было играться, сейчас лавочка закрылась. |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
причем тут рб? я сейчас о другом говорю |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Windrunner
Верь мне!
![]() ![]() offline
Опыт:
4,565Активность: |
Мб я тут не в тему но разве рб не закрыли?Оо и как с помощью рб получить код? |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|