Сейчас на форуме: tyns777 (+4 невидимых)

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


Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

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

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

-----
Research For Food





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

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

ИМХО cmp [eip], 0c2

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

-----
Research For Food





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

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

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



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

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

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


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



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

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

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


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




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

-----
Research For Food





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

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

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

-----
[nice coder and reverser]





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

-----
Research For Food





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 17 мая 2009 01:32 · Поправил: Модератор
· Личное сообщение · #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]




Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 17 мая 2009 01:42
· Личное сообщение · #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




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

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



-----
Research For Food





Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

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

daFix
var Image_base
var Code_base

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

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

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

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

-----
Research For Food




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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

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




Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

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

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

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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

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

-----
Research For Food




Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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

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




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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


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




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

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

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

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




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

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

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




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 22 мая 2009 16:09 · Поправил: 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




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

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

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

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

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



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

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

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

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



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

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

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

Даже если так, попробуй поискать все прыжки в секции размером так это 4A000, очень медленно, мне кажется это из-за того что при любой команде отображается состояние регистров что как раз и замедляет. Что касается exec ende такого не происходит


. 1 . 2 . >>
 eXeL@B —› Программирование —› Вопросы по Olly Script
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати