Сейчас на форуме: kris_sexy, ==DJ==[ZLO] (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Изменение ехе добавление байт
Посл.ответ Сообщение

Ранг: 4.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 06 августа 2006 19:08
· Личное сообщение · #1

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




Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 06 августа 2006 19:17
· Личное сообщение · #2

Находишь в файле свободное место - последовательность нулевых байт (как правило они присутствуют в конце секций, либо используешь DOS stub - см. с адреса .400078), делаешь jmp по найденному адресу, пишешь туда свой код, в конце которого делаешь jmp назад. Называется все это "инлайн-патч".



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

Создано: 06 августа 2006 19:30
· Личное сообщение · #3

_dk_ пишет:
у меня ф-ыю je надо заменить на jmp размер их разный поэтому затираются несколько сл. ф-ый

Если таргет бранча находится в пределах [-127, 128], то используется короткий опкод je/jmp. Оба занимают 2 байта. Размер одинаковый. Если таргет не вписывается в короткий вариант, то используется длинный: je (6 байт), jmp (5 байт). Как видишь, jmp даже короче в этом случае. Так что, не вижу, в чём проблема.



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

Создано: 06 августа 2006 19:36 · Поправил: Veliant
· Личное сообщение · #4

Я понял что он хотел сказать
делаешь так
jmp xxxx1
;тут что то затирается
;xxxx2:
;------КОД---------
0000000000000 ;пошли нули
;xxxx1:
тут начинаешь вписывать что хотел +
то что затрется сверху+
jmp обратно на xxxx2

; - коментарий
Внимание: надо сначала вписать в конец что надо, а потом уже править джамп туда



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 06 августа 2006 19:44 · Поправил: theCollision
· Личное сообщение · #5

Все итак понятно, же из 1го поста!
Афтар видит je он занимает по интеловской док:
Jc - 7x то бишь 2 байта!!!
А если он ставит jmp nj получает как минимум 2 байта но может быть и более-
JMP - E8 short(f64) Jb

Отсюда вывод: Если правит на jmp , то затирает следующую инструкцию, а ему это не надо!

Вопрос автору: Я правильный телепат? ;)

Если да, то тебе надо сделать это место jmp куда надо:
А там сделать окрестности кода с тем, что тебе надо и jmp обратно! К примеру из-за выравнивания секций, в конце секции кода или данных или еще чего много нулей!

-----
My love is very cool girl.




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

Создано: 06 августа 2006 19:47
· Личное сообщение · #6

А я ему тоже самое и посоветовал



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 06 августа 2006 19:50
· Личное сообщение · #7

Veliant
Дело в том, что автор мог и неувидеть нули, почему читай упаковщики, дополнение значением байтов до значения выравнивание любое!
Тебе надо было описать мысли четче, а термин "выравнивание секций" может навести на хорошую мысль

-----
My love is very cool girl.




Ранг: 4.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 06 августа 2006 20:04
· Личное сообщение · #8

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



Ранг: 4.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 06 августа 2006 20:05
· Личное сообщение · #9

theCollision пишет:
Вопрос автору: Я правильный телепат? ;)

Ну да что-то в этом роде...



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 06 августа 2006 20:08
· Личное сообщение · #10

Мне кажется, что топикстартер просто вбивает мнемонику (!) в отладчике, чтобы пропатчить код. Естественно, вставляется jmp с абсолютной адресацией, который длиннее на 3 байта.
_dk_
замени первый байт (74h для je, 75h для jne) на EBh




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

Создано: 06 августа 2006 20:14
· Личное сообщение · #11

а если то что затирается используется прогой раньше чем патченное место?
например:

a1: je n1 <- сюда jmp xxx
a2: jmp n2 - здесь затрем

а проге нужно и в a1 и в a2 попасть



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 06 августа 2006 20:19
· Личное сообщение · #12

Топиккреативер, ясно же сказал: Что есть команда je и не зависимо, что дальше,надо jmp! Задача поставлена изменить на jmp и не надо : "а если то что...", т.к. задача поставлена, потому что "а если то что..", то это уже другая задача!

Если я не прав по поводу задачи, пусть автор топика и поправит!

-----
My love is very cool girl.




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

Создано: 06 августа 2006 20:29 · Поправил: Veliant
· Личное сообщение · #13

r99 пишет:
а если то что затирается используется прогой раньше чем патченное место?
например:

a1: je n1 <- сюда jmp xxx
a2: jmp n2 - здесь затрем

а проге нужно и в a1 и в a2 попасть


то je n1 меняешь на jmp x1 ( где х1- адрес нового кода)
а в новом коде пишешь
jmp n1
jmp n2

Но это получается бред поэтому можно просто заNOPить остатки jmp n2




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

Создано: 06 августа 2006 20:39
· Личное сообщение · #14

Veliant
подумай



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

Создано: 06 августа 2006 20:58 · Поправил: Veliant
· Личное сообщение · #15

Подумал))
допустим было так:
a1:cmp ax,1
a2:je n1
a3:jmp n2

будет:
a1:jmp aN
a2:либо исчезнет либо NOP'им
a3:jmp n2

aN:cmp ax,1
aN+1:jmp n1

а можно просто на место cmp ax,1 вписать jmp n1



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

Создано: 06 августа 2006 21:43
· Личное сообщение · #16

rmn пишет:
Мне кажется, что топикстартер просто вбивает мнемонику (!) в отладчике, чтобы пропатчить код. Естественно, вставляется jmp с абсолютной адресацией, который длиннее на 3 байта.

Переходи на нормальный отладчик, вроде OllyDbg, который подобными дефектами не страдает ;)



Ранг: 4.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 06 августа 2006 22:01
· Личное сообщение · #17

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




Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 06 августа 2006 22:58 · Поправил: =TS=
· Личное сообщение · #18

_dk_
theCollision
Блин! rmn же ЯСНО написал: меняем первый байт на EB (опкод КОРОТКОГО jmp) и все!

_dk_
Насчет программ, вставляющих больше байт чем было забудь -- такого нет
вопрос решается только jmp (коротким или длинным) на неиспользуемое место с переносом тех инструкций, вместо которых написан jmp, в место перехода и с возвратом в конце вставки на следующую инструкцию после прыжка (как писал Veliant)

-----
DREAMS CALL US




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 06 августа 2006 23:02
· Личное сообщение · #19

=TS=
Надо не рыбу давать, а метод ловли рыбы! Что толку от рыбы, если человек завтра же тебя и спросит: "мне еще рыбы надо,есть?" Вот и показывать надо как эту рыбу сейчас поймали! Причем показывать так, чтобы не только карась, но и окунь поймался!

-----
My love is very cool girl.





Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 06 августа 2006 23:05
· Личное сообщение · #20

theCollision пишет:
Надо не рыбу давать, а метод ловли рыбы!

Вот ему и дали метод для замены перехода условных джампов на безусловные!

-----
DREAMS CALL US




Ранг: 4.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 августа 2006 00:27 · Поправил: _dk_
· Личное сообщение · #21

=TS= пишет:
Блин! rmn же ЯСНО написал: меняем первый байт на EB (опкод КОРОТКОГО jmp) и все!

А ну теперь понятно напримeр вместо 74 - je, написать EB - jmp...



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 07 августа 2006 07:57
· Личное сообщение · #22

_dk_
Хреново думаешь и поступаешь!!!
Как работает прыжок? )) Просто берется значения jmp или jCCC, jnCCC и добавляется к eip, отсюда 1 бит идет как знаковый и того получается, что ты можешь на 128 байт назад прыгнуть или на 127 вперед. Следующий раз возникнет необходимость прыгнуть на более байт вперед\назад опять сюда??? Нет уж, лучше ты сразу пойми, как делать надо и с разными вариантами, полезней для головы!

-----
My love is very cool girl.



 eXeL@B —› Крэки, обсуждения —› Изменение ехе добавление байт
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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