CRACKL@B Оригинальный DVD-ROM крэкера: CRACKL@B DVD !
Домой | Статьи | RAR-cтатьи | Форум | Программирование | Скачать | DVD-ROM
Новичку | FAQ | Ссылки | Интервью | Архив | Новости | Связь


Русский / Russian English / Английский

Сейчас на форуме: vovanchik-77, SVLab (+5 невидимых пользователей)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 CRACKL@B —› Программирование —› Вопросы по Olly Script
. 1 . 2 . >>
Посл.ответ Сообщение
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 24 апреля 2009 23:31:01 · Поправил: daFix
Личное сообщение #1

Поискал по форуму, но не увидел подобной темы. Вобщем начал изучать олли скрипт, но застрял на одной проблеме...
Проблема заключается в том что не могу считать код, находящийся на eip([eip]). Вот мой не работающий код:
Code:
  1. trace_loop:
  2. sti
  3. cmp [eip], #c2#
  4. jne trace_loop

Если [eip] не равен байту "c2", то прыгаем... Только проблема в том что как я не пытался, условие так и не выполнилось

OKOB
Неа, не работает

-----
Research For Food
OKOB

Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 24 апреля 2009 23:48:35
Личное сообщение #2

ИМХО cmp [eip], 0c2
Bronco


Ранг: 527.7 (!)
Статус: Участник

Создано: 24 апреля 2009 23:57:36 · Поправил: Bronco
Личное сообщение #3

поставь размер , условие будет конкретней.
cmp [eip], c2 , 1
решётку лучше юзать когда больше одного байта

-----
Чтобы юзер в нэте не делал,его всё равно жалко..
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 25 апреля 2009 00:09:39
Личное сообщение #4

Bronco
Пришёл, увидел, победил... Спасибо огромное! Уже весь вечер бился над этим, и других мучал)))
Тему пока не буду закрывать, ибо только начал учить скрипты...

-----
Research For Food
Nightshade


Ранг: 77.8 (постоянный)
Статус: Участник

Создано: 25 апреля 2009 07:37:20
Личное сообщение #5

Совет на будущее-
Трейсь скрипт - когда бы остановился на С2
увидел бы что переход не работает - удивился
и посмотрел бы что [exx] - это всегда 4 байта
vnekrilov

Ранг: 188.6 (ветеран)
Статус: Участник

Создано: 25 апреля 2009 08:07:50
Личное сообщение #6

daFix пишет:
Проблема заключается в том что не могу считать код, находящийся на eip([eip]). Вот мой не работающий код:


Посмотри на мои скрипты или скрипты от VolX. Там имеется реализация многих разных инструкций, в том числе и тех, на которых ты застрял. Я, когда отлаживаю работу скриптов, всегда их трассирую в окне ODBGScript. Это окно прекрасно показывает разные ошибки.
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 25 апреля 2009 08:10:18
Личное сообщение #7

daFix
И ещё посмотри у меня в блоге, выкладывали очень хорошую книженцию по командам олли скрипт с описанием. Описание по английски, но понять можно очень легко.
vnekrilov

Ранг: 188.6 (ветеран)
Статус: Участник

Создано: 25 апреля 2009 09:13:27
Личное сообщение #8

Djeck пишет:
И ещё посмотри у меня в блоге, выкладывали очень хорошую книженцию по командам олли скрипт с описанием. Описание по английски, но понять можно очень легко.


В топике http://www.cracklab.ru/f/index.php?action=vthread&forum=1&topic=14059& page=0 я выкладывал русскую справку по командам самой последней версии ODBGScript. Кроме того, в этом топике Gideon Vi выложил собранный материал по OllyDbgScriptEditor 1.2 by Guru_eXe, который содержит обновленную подсветку синтаксиса команд (от bronco), справочник по командам, и т.д. Рекомендую использовать этот инструмент.
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 25 апреля 2009 13:04:50 · Поправил: daFix
Личное сообщение #9

Nightshade
Да я и не знал что в этой команде можно размерность задавать. И в доках об этом ни слова...
Спасибо vnekrilov, Bronco. Использую материал из того топика
Спасибо, Djeck. Сейчас гляну

-----
Research For Food
Hellspawn


Ранг: 679.4 (! !)
Статус: Модератор
Author of DiE

Создано: 25 апреля 2009 14:04:57
Личное сообщение #10

вопрос как я понимаю решён

-----
[nice coder and reverser]
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 17 мая 2009 01:14:42
Личное сообщение #11

Вот опять зашёл в тупик
Теперь пытаюсь получить Code Base и размер первой секции. Пытался через gmi, но так и не понял
что там за арифметика используется. На крайняк придётся из хидера брать, но это много лишнего
кода получится. Есть ли какие нибудь варианты решения проблемы?

-----
Research For Food
Hellspawn


Ранг: 679.4 (! !)
Статус: Модератор
Author of DiE

Создано: 17 мая 2009 01:32:18 · Поправил: Модератор
Личное сообщение #12

выдрал из своего старого скрипта:
Code:
  1. gmi eip, CODEBASE 
  2. mov cbase,$RESULT
  3. log cbase 
  4. gmi eip, CODESIZE 
  5. mov csize,$RESULT
  6. log csize 
  7. mov sz,0
  8. add sz,cbase
  9. add sz,csize


-----
[nice coder and reverser]
MasterSoft

Ранг: 44.6 (посетитель)
Статус: Участник

Создано: 17 мая 2009 01:42:03
Личное сообщение #13

daFix пишет:
Пытался через gmi, но так и не понял
что там за арифметика используется

Вот так мона:
Code:
  1. var codebase 
  2. var codesize
  3. gmi eip,codebase
  4. mov codebase,$RESULT
  5. gmi eip,codesize
  6. mov codesize,$RESULT
  7. .....
  8. bprm codebase,codesize
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 17 мая 2009 01:49:58
Личное сообщение #14

daFix
Только учитывать надо одну вещь. Не всегда скрипт будет выдавать правильный сайз. По крайней мере у меня он выдавал размер много раз неправильныйЕсли честно не знаю с чем это связано.
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 17 мая 2009 01:56:00 · Поправил: daFix
Личное сообщение #15

MasterSoft
Да это какраз и не работает. Это первое, что я пробывал

Djeck
Видать с тобой в одинаковой ситуации оказались)) Видать придётся через хидер



-----
Research For Food
ClockMan


Ранг: 130.4 (ветеран)
Статус: Участник

Создано: 17 мая 2009 01:57:46
Личное сообщение #16

daFix
var Image_base
var Code_base

gmi eip,MODULEBASE
mov Image_base,$RESULT
gmi Image_base,CODEBASE
mov Code_base,$RESULT
ret

вот так попробуй

-----
Вы ещё пользуетесь платным софтом? тогда мы идём к вам! :)
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 17 мая 2009 02:08:22 · Поправил: Djeck
Личное сообщение #17

daFix
Если ты заморачиваешься насчёт размера (всмысле хочешь понять почему не правильный выдаёт), то забей.Я тоже хотел понять логику, ну думал чё прибавить или отнять. выдавать на всех файлах он будет по разному, видать это глюк. Но сказать честно я и не заморачивался, так как для меня это было не принципиально и я размер указывал вручную. Если ты хочешь делать универсальный скрипт, то чтобы не епать мозг можно как вариант спрашивать у юзера размер секции с кодом командой ASK.
З.Ы. Если не секрет, то что ты хочешь сделать скриптом. Я просто рпедчуствую, что ты вм разбираешь
Добавлено:
Ну, да по названию програмки видно, что обсид колупаешьЧто надо скриптом сделать?
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 17 мая 2009 02:13:36 · Поправил: daFix
Личное сообщение #18

ClockMan, Djeck, видать ошибка связана с тем что попорчен заголовок и Size Of Code не соответствует заявленному в хидере

ADDED
Djeck
Не, я пока импорт доделываю. Уже все версии берёт, включая 1.4. Осталось ещё пару
функций восстанавливать скриптом, но это уже мелочи. А по поводу VM я тебя уже просил вылезти
в аську. Хотел пару вопросов задать

-----
Research For Food
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 17 мая 2009 02:17:45
Личное сообщение #19

А это будет не только на обсиде. И на упх несколько раз встречалосьОн же не портит заголовок. Надо разные версии оллискрипт попробовать, мож на других такого не будет
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 17 мая 2009 02:20:30
Личное сообщение #20

daFix пишет:
Не, я пока импорт доделываю. Уже все версии берёт, включая 1.4. Осталось ещё пару
функций восстанавливать скриптом, но это уже мелочи. А по поводу VM я тебя уже просил вылезти
функций восстанавливать скриптом, но это уже мелочи. А по поводу VM я тебя уже просил вылезти
в аську. Хотел пару вопросов задать

Завтра вылезу. А по поводу импорта, ты его трейсишь ставя бряк на первые переходники (в самом начале при вызове функции) или при вызове импорта типа JMP XXXXXX?
ClockMan


Ранг: 130.4 (ветеран)
Статус: Участник

Создано: 17 мая 2009 02:21:17
Личное сообщение #21

Ты потрассируй в ручную скрипт и посмотри какие значение передаются в переменные

-----
Вы ещё пользуетесь платным софтом? тогда мы идём к вам! :)
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 17 мая 2009 02:25:48 · Поправил: daFix
Личное сообщение #22

Djeck
При прыжке на него (jmp [xxxxxxxx])
Пока только трейс, но он медленный. Но потом, когда разберусь со всеми мелочами, допишу его чтобы он работал в разы быстрее
Лучше правь предыдущие сообщения, чтобы не шлёпать несколько постов подряд

ClockMan
Да чего там трейсить? Это ошибка плагина. Этот способ можно отбросить. Есть ещё какие нибудь идеи?

-----
Research For Food
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 17 мая 2009 02:35:04
Личное сообщение #23

daFix пишет:
При прыжке на него (jmp [xxxxxxxx])

Тут я тебя должен разочароватьИбо на Microsoft Visual C++ у твоего скрипта при таком подходе возникнут проблемы.Попробуй прогу Net Chess и сам всё поймёшь. Я тоже столкнулся с такой проблемой, потому что до этого распаковывал только делфи и Borland C++.
Bronco


Ранг: 527.7 (!)
Статус: Участник

Создано: 18 мая 2009 01:10:40
Личное сообщение #24

daFix пишет:
Это ошибка плагина. Этот способ можно отбросить

Хз..для чего нужен размер сегмента памяти при восстановлении импорта, но на плуг грешить последнее дело.
Попробуй так:
GMEMI eip, MEMORYSIZE // MEMORYBASE
log $RESULT, "size: "
ret


-----
Чтобы юзер в нэте не делал,его всё равно жалко..
Vlastmen

Ранг: 2.0 (гость)
Статус: Участник

Создано: 22 мая 2009 15:25:21
Личное сообщение #25

Хочу сделать цикл между exec и ende, но не знаю как прыгнуть на первую команду, к примеру так:
-----
exec
inc eax
test ecx, ecx
jne ???; сдесь я хочу перепрыгнуть на первую команду после exec т.е. на inc eax
ende
ret
-----

Как это сделать? Я знаю что вне exec и ende можно задавать метки, но внутри нет.
Nightshade


Ранг: 77.8 (постоянный)
Статус: Участник

Создано: 22 мая 2009 15:35:53
Личное сообщение #26

Лучше выдели память
запиши в нее инструкции и выполняй код там
daFix


Ранг: 262.4 (наставник)
Статус: Участник

Создано: 22 мая 2009 16:09:03 · Поправил: daFix
Личное сообщение #27

Vlastmen
Code:
  1. var oldeip
  2. var alladdr
  3. alloc 1000
  4. mov alladdr, $RESULT
  5. //тут пишем код который хочешь выполнить, начиная со смещения alladdr
  6. mov oldeip, EIP
  7. mov EIP, alladdr
  8. //ставим бряк на конец твоего вписанного когда
  9. run
  10. mov EIP, oldeip
  11. ret


Примерно так

-----
Research For Food
Vlastmen

Ранг: 2.0 (гость)
Статус: Участник

Создано: 22 мая 2009 23:46:42
Личное сообщение #28

Nightshade пишет:
Лучше выдели память
запиши в нее инструкции и выполняй код там

Раньше так и делал.
Хотел попробовать через скрипт, всё же удобнее было бы.
Если в скрипте делать вне exec ende то очень долго выполняется, если к примеру нужно что-то найти в секции.
daFix пишет:
Примерно так

Это вне exec ende, и здесь уже можно задать метку
Djeck

Ранг: 161.8 (ветеран)
Статус: Участник

Создано: 22 мая 2009 23:54:23
Личное сообщение #29

Vlastmen пишет:
Раньше так и делал.
Хотел попробовать через скрипт, всё же удобнее было бы.

Я так понял тебе и советуют через скрипт командой alloc выделить память
Vlastmen

Ранг: 2.0 (гость)
Статус: Участник

Создано: 23 мая 2009 00:08:49
Личное сообщение #30

Я делал так, в конце секции находил свободное место, размещал код, Ctrl + * и поехали... В конце ставил Break и возвращался на прежний адрес.
Djeck пишет:
Я так понял тебе и советуют через скрипт командой alloc выделить память

Даже если так, попробуй поискать все прыжки в секции размером так это 4A000, очень медленно, мне кажется это из-за того что при любой команде отображается состояние регистров что как раз и замедляет. Что касается exec ende такого не происходит
. 1 . 2 . >>
 CRACKL@B —› Программирование —› Вопросы по Olly Script
    Для печати 


Оригинальный DVD-ROM крэкера: CRACKL@B DVD !


Вы находитесь на форуме сайта CRACKLAB.RU
Проект ReactOS