Оффсеты для Olly. Авто поиск для всех версий. | MU разработка

Автор DarkSim, 2013 Май 02, 00:20

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] разработкаоффсетыollyскрипты для olly

DarkSim

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

Найти абсолютно универсальный вариант для всех маинов врядли получится, но постараюсь обеспечить это как минимум c 3.2 по 6.3 версии.

Скрипт (обновление: 05.05.2013):
Спойлер
var LogFile
var Start
var Version
var VersionConvert
var Serial
var MapNumber
var MainState
var UserObjectStruct
var ObjectPreviewStruct
var MasterLevel
var MasterPoints
var CursorX
var CursorY
var MaxZenWidth1
var MaxZenWidth2
var MaxZenWidth3
var MaxZenWidth4
var MaxZenWidth5
var WinWidth
var WinHeight
var CameraZoom
var CameraRotY
var CameraRotZ
var CameraPosZ
var CameraClipX
var CameraClipY
var CameraClipGL
// ---------------------------------------------------------
mov LogFile, ".\MU.txt"
mov Start, 401000
// ---------------------------------------------------------
wrt LogFile, "//Auto researcher script"
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
find Start, #83BD??????FF10#
cmp [$RESULT + f], 8a, 1
je Except1
mov Serial, [$RESULT + 12]
jmp WriteVersion
Except1:
mov Serial, [$RESULT + 11]
WriteVersion:
mov Version, Serial - 8
atoi [Version]
mov VersionConvert, $RESULT - 22345
eval "//Main: 10{VersionConvert}"
wrta LogFile, $RESULT
eval "#define Version                    0x{Version} //-> {[Version]}"
wrta LogFile, $RESULT
log Version
eval "#define Serial                    0x{Serial} //-> {[Serial]}"
wrta LogFile, $RESULT
log Serial
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
find Start, #83F945#
mov MapNumber, [$RESULT + 7]
eval "#define MapNumber                *(int*)0x{MapNumber}"
wrta LogFile, $RESULT
log MapNumber
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
find Start, #6A006A006A73#
mov MainState, [$RESULT - 7]
eval "#define MainState                *(int*)0x{MainState}"
wrta LogFile, $RESULT
log MainState
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
find Start, #81F980000000740432C0EB19#
mov UserObjectStruct, [$RESULT + 0e]
eval "#define UserObjectStruct        0x{UserObjectStruct}"
wrta LogFile, $RESULT
log UserObjectStruct
// ---------------------------------------------------------
//1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN)
find Start, #C745FC0000000068E900000068C1000000#
mov ObjectPreviewStruct, [$RESULT - 21]
eval "#define ObjectPreviewStruct        0x{ObjectPreviewStruct}"
wrta LogFile, $RESULT
log ObjectPreviewStruct
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN)
find Start, #5?68D2060000#
mov MasterLevel, [$RESULT - 4]
eval "#define MasterLevel                *(short*)0x{MasterLevel}"
wrta LogFile, $RESULT
log MasterLevel
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN)
find Start, #5?68D3060000#
mov MasterPoints, [$RESULT - 4]
eval "#define MasterPoints            *(short*)0x{MasterPoints}"
wrta LogFile, $RESULT
log MasterPoints
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN)
find Start, #813D????????2C010000#
mov CursorX, [$RESULT + 2]
wrta LogFile, "#define CursorX                    *(int*)0x"
wrta LogFile, CursorX, ""
log CursorX
mov CursorY, [$RESULT + 1a]
wrta LogFile, "#define CursorY                    *(int*)0x"
wrta LogFile, CursorY, ""
log CursorY
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
findcmd Start, "push 8;push 0c; push 32"
GREF 0
GREF 1
mov MaxZenWidth1, $RESULT + 1
eval "#define MaxZenWidth1            *(BYTE*)0x{MaxZenWidth1}"
wrta LogFile, $RESULT
log MaxZenWidth1
GREF 2
mov MaxZenWidth2, $RESULT + 1
eval "#define MaxZenWidth2            *(BYTE*)0x{MaxZenWidth2}"
wrta LogFile, $RESULT
log MaxZenWidth2
GREF 3
mov MaxZenWidth3, $RESULT + 1
eval "#define MaxZenWidth3            *(BYTE*)0x{MaxZenWidth3}"
wrta LogFile, $RESULT
log MaxZenWidth3
GREF 4
mov MaxZenWidth4, $RESULT + 1
eval "#define MaxZenWidth4            *(BYTE*)0x{MaxZenWidth4}"
wrta LogFile, $RESULT
log MaxZenWidth4
GREF 5
mov MaxZenWidth5, $RESULT + 1
eval "#define MaxZenWidth5            *(BYTE*)0x{MaxZenWidth5} //-> If 0x0 or 0x1 = not in use"
wrta LogFile, $RESULT
log MaxZenWidth5
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
find Start, #C705????????40060000#
mov WinWidth, [$RESULT + 2]
eval "#define WinWidth                *(GLsizei*)0x{WinWidth}"
wrta LogFile, $RESULT
log WinWidth
mov WinHeight, WinWidth + 4
eval "#define WinHeight                *(GLsizei*)0x{WinHeight}"
wrta LogFile, $RESULT
log WinHeight
// ---------------------------------------------------------
//Tested: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)
find Start, #C705????????00000C42#
cmp $RESULT, 0
je Season6
mov CameraZoom, $RESULT + 6
// ----
find Start, #5ED8C1#
mov CameraRotY, [$RESULT - 11]
// ----
find Start, #C74424??00C0A845C74424??00007A46C705????????000020C2#
mov CameraRotZ, [$RESULT + 12]
// ----
find Start, #D8C1D91D????????DDD8#
mov CameraPosZ, [$RESULT - 4]
// ----
find Start, #C745??????????C745??00609F46C745??????????#
mov CameraClipX, [$RESULT + 52]
mov CameraClipY, $RESULT - 2a
// ----
find Start, #D99D????????E8????????99B958020000F7F9#
mov CameraClipGL, [$RESULT - 4]
// ----
jmp EndOfCamSearch
Season6:
find Start, #6A006A006889000000#
mov CameraZoom, [$RESULT - 14]
// ----
find Start, #0FB7045?????????2?800000007427#
mov CameraRotY, [$RESULT - 1f]
mov CameraRotZ, [$RESULT - 4b]
// ----
find Start, #6AFF6A006AFF6A006A006A285?D905????????D91C24#
mov CameraPosZ, [$RESULT + 0f]
// ----
find Start, #833D????????2775??D905????????D95D??EB??D905????????D95D??833D????????02#
mov CameraClipX, [$RESULT + 9b]
// ----
find Start, #D905????????D95DE?51D9E?D91C??8D55??5?8D45??5?6878010000#
mov CameraClipY, [$RESULT + 2]
// ----
find Start, #D905????????D95D??8B4???8378??7A#
mov CameraClipGL, [$RESULT + 2]
// ----
EndOfCamSearch:
eval "#define CameraZoom                *(float*)0x{CameraZoom}"
wrta LogFile, $RESULT
log CameraZoom
eval "#define CameraRotY                *(float*)0x{CameraRotY}"
wrta LogFile, $RESULT
log CameraRotY
eval "#define CameraRotZ                *(float*)0x{CameraRotZ}"
wrta LogFile, $RESULT
log CameraRotZ
eval "#define CameraPosZ                *(float*)0x{CameraPosZ}"
wrta LogFile, $RESULT
log CameraPosZ
eval "#define CameraClipX                *(float*)0x{CameraClipX} //-> if Season 6+ == *(double*)"
wrta LogFile, $RESULT
log CameraClipX
eval "#define CameraClipY                *(float*)0x{CameraClipY}"
wrta LogFile, $RESULT
log CameraClipY
eval "#define CameraClipGL            *(float*)0x{CameraClipGL}"
wrta LogFile, $RESULT
log CameraClipGL
// ---------------------------------------------------------
[свернуть]

Список (обновление: 05.05.2013):
Спойлер
  • char Version
  • char Serial
  • int MapNumber
  • int MainState (он же PlayerState, это же статус клиента в игре / на свитче и т.д.)
    - SelectServer = 2, SwitchCharacter = 4, Playing = 5

  • struct UserObjectStruct
  • struct ObjectPreviewStruct (как в MakePreviewCharSet, только глобальная)
  • short MasterLevel
  • short MasterPoints
  • int CursorX
  • int CursorY
  • BYTE MaxZenWidth[1-5] (Макс. количество цифр в сундуке / трейде)
    - Выдает прямой оффсет, т.е. сразу *(BYTE*)0xXXXXXXXX = 9, а не +1;

  • GLsizei WinWidth
  • GLsizei WinHeight
  • float CameraZoom
  • float CameraRotY
  • float CameraRotZ
  • float CameraPosZ
  • float CameraClipX
    - В клиентах выше S6 это может быть double (8 байт)
  • float CameraClipY
  • float CameraClipGL
[свернуть]

Как использовать:
0. Скачиваем олдскульную Olly 1.10
1. Копируем код, создаем новый текстовый документ, вставляем его туда и делаем расширение файла .osc
2. Скачиваем плагин, подключаем его в Olly
3. Заходим в Olly, открываем наш main.exe
4. Открываем в меню Plugins -> ODbgScript -> Log Window
## здесь был скриншот ##
5. Выполняем скрипт, Plugins -> ODbgScript -> Run Script...
6. Смотрим в MU.txt и радуемся оффсетам
## здесь был скриншот ##
-

Проверено на версиях: 1.04.04 (ENG), 1.03.28 (ENG), 1.03.25 (JPN), 1.03.11 (JPN)

-

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

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

DarkSim

UP:
- Добавлен вывод оффсетов в .\MU.txt в готовом формате

- Добавлены оффсеты версии и серии маина

KamatoZ

Для 1.4.10 Антрум мейна есть? Если нет тогда может сделаеш?


DarkSim

#3
KamatoZ
- от 3.2 поддержка, на 3.1 может серийник и версию определит

UP:
- Добавлены размер и ширина окна
- Изменения в форматировании списка и мелкие оптимизации в самом выводе текста в лог

UP:
- Добавлен тестовый поиск оффсетов камеры, нужно тестировать

NZK

#4
проверил - работает, вот только маловато оффсетов)
Main 1.04.10 - антрум )
Спойлер
//Auto researcher script
//Main: 10410
#define Version                    0x77F598 //-> 22755
#define Serial                    0x77F5A0 //-> eSpringMUbyNZ2013
#define MapNumber                *(int*)0x4D8B52B0
#define MainState                *(int*)0x192344
#define UserObjectStruct        0x0
#define ObjectPreviewStruct        0x88BF0F07
#define MasterLevel                *(short*)0x0
#define MasterPoints            *(short*)0x0
#define CursorX                    *(int*)0x7AFE950
#define CursorY                    *(int*)0x7AFE94C
#define MaxZenWidth1            *(BYTE*)0x1
#define MaxZenWidth2            *(BYTE*)0x1
#define MaxZenWidth3            *(BYTE*)0x1
#define MaxZenWidth4            *(BYTE*)0x1
#define MaxZenWidth5            *(BYTE*)0x1 //-> If 0x0 or 0x1 = not in use
#define WinWidth                *(GLsizei*)0x77E350
#define WinHeight                *(GLsizei*)0x77E354
#define CameraZoom                *(float*)0x660390
#define CameraRotY                *(float*)0x0
#define CameraRotZ                *(float*)0x7AFE994
#define CameraPosZ                *(float*)0x2F98300
#define CameraClipX                *(float*)0x0 //-> if Season 6+ == *(double*)
#define CameraClipY                *(float*)0xFFFFFFD6
#define CameraClipGL            *(float*)0xFFFFFEF8
[свернуть]

Profesor08


NZK

#define blablabla           *(short*)0x0

я видел  я хотел проверить работает ли скрипт вобще.  
для мейна пустяк, вот если бы для GSa была эта фитча - было бы хорошо )
хотябы на самое главное - деф,атаку,атак спид,dmg, bk_buff, mana shield.

и если ктото сделал было бы в 2-не гуд, так как работало бы с GS & GS_CS

будем считать что скрипт гуд )))

link184


Atlantica

Получил такое значение:

Спойлер
//Auto researcher script
//Main: 10404
#define Version                    0xE61F68 //-> 22749
#define Serial                    0xE61F70 //-> 1234567890123456
#define MapNumber                *(int*)0xE61E18
#define MainState                *(int*)0xE609E8
#define UserObjectStruct        0x8128AC8
#define ObjectPreviewStruct        0x7BC4F04
#define MasterLevel                *(short*)0x87935D8
#define MasterPoints            *(short*)0x87935F2
#define CursorX                    *(int*)0x879340C
#define CursorY                    *(int*)0x8793410
#define MaxZenWidth1            *(BYTE*)0x7AF026
#define MaxZenWidth2            *(BYTE*)0x7AF2C6
#define MaxZenWidth3            *(BYTE*)0x7AF646
#define MaxZenWidth4            *(BYTE*)0x7B01C6
#define MaxZenWidth5            *(BYTE*)0x1 //-> If 0x0 or 0x1 = not in use
#define WinWidth                *(GLsizei*)0x0
#define WinHeight                *(GLsizei*)0x4
#define CameraZoom                *(float*)0xD27BFC
#define CameraRotY                *(float*)0xD27B88
#define CameraRotZ                *(float*)0x87933D8
#define CameraPosZ                *(float*)0xD255AC
#define CameraClipX                *(float*)0xD2C848 //-> if Season 6+ == *(double*)
#define CameraClipY                *(float*)0xD2C894
#define CameraClipGL            *(float*)0xD2570C
[свернуть]

как изменить параметр CameraClipY?

worope

Цитата: Atlantica от 2013 Июль 26, 17:56  Получил такое значение:

Спойлер
//Auto researcher script
//Main: 10404
#define Version                    0xE61F68 //-> 22749
#define Serial                    0xE61F70 //-> 1234567890123456
#define MapNumber                *(int*)0xE61E18
#define MainState                *(int*)0xE609E8
#define UserObjectStruct        0x8128AC8
#define ObjectPreviewStruct        0x7BC4F04
#define MasterLevel                *(short*)0x87935D8
#define MasterPoints            *(short*)0x87935F2
#define CursorX                    *(int*)0x879340C
#define CursorY                    *(int*)0x8793410
#define MaxZenWidth1            *(BYTE*)0x7AF026
#define MaxZenWidth2            *(BYTE*)0x7AF2C6
#define MaxZenWidth3            *(BYTE*)0x7AF646
#define MaxZenWidth4            *(BYTE*)0x7B01C6
#define MaxZenWidth5            *(BYTE*)0x1 //-> If 0x0 or 0x1 = not in use
#define WinWidth                *(GLsizei*)0x0
#define WinHeight                *(GLsizei*)0x4
#define CameraZoom                *(float*)0xD27BFC
#define CameraRotY                *(float*)0xD27B88
#define CameraRotZ                *(float*)0x87933D8
#define CameraPosZ                *(float*)0xD255AC
#define CameraClipX                *(float*)0xD2C848 //-> if Season 6+ == *(double*)
#define CameraClipY                *(float*)0xD2C894
#define CameraClipGL            *(float*)0xD2570C
[свернуть]

как изменить параметр CameraClipY?
Перейти на данный оффсет в дебагере и изменить значение)

Atlantica

Спасибо!!!

Мне нужно увеличить дальность прорисовки (обзора). CameraClipY за него отвечает?

с CameraClipY разобрался... А вот CameraClipX никак не получается. Может кто подскажет как его увеличить?

ctpelok73

Добавь еще поиск оффсета на расширение количества вещей

Похожие темы (5)