Посл.ответ |
Сообщение |
Ранг: 4.4 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 августа 2006 19:08 · Личное сообщение · #1
Часть взлома основана на замене байт в программе, а можно каким либо путем добавить байцты в сересередину программы??
Если нет то что делать когда у меня ф-ыю je надо заменить на jmp размер их разный поэтому затираются несколько сл. ф-ый, но что делать если они нужны??? Искать другой путь...???
| Сообщение посчитали полезным: |
|
 Ранг: 199.9 (ветеран), 4thx Активность: 0.12↘0.02 Статус: Участник
|
Создано: 06 августа 2006 19:17 · Личное сообщение · #2
Находишь в файле свободное место - последовательность нулевых байт (как правило они присутствуют в конце секций, либо используешь DOS stub - см. с адреса .400078), делаешь jmp по найденному адресу, пишешь туда свой код, в конце которого делаешь jmp назад. Называется все это "инлайн-патч".
| Сообщение посчитали полезным: |
Ранг: 29.5 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 августа 2006 19:30 · Личное сообщение · #3
_dk_ пишет:
у меня ф-ыю je надо заменить на jmp размер их разный поэтому затираются несколько сл. ф-ый
Если таргет бранча находится в пределах [-127, 128], то используется короткий опкод je/jmp. Оба занимают 2 байта. Размер одинаковый. Если таргет не вписывается в короткий вариант, то используется длинный: je (6 байт), jmp (5 байт). Как видишь, jmp даже короче в этом случае. Так что, не вижу, в чём проблема.
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 06 августа 2006 19:36 · Поправил: Veliant · Личное сообщение · #4
Я понял что он хотел сказать
делаешь так
jmp xxxx1
;тут что то затирается
;xxxx2:
;------КОД---------
0000000000000 ;пошли нули
;xxxx1:
тут начинаешь вписывать что хотел +
то что затрется сверху+
jmp обратно на xxxx2
; - коментарий
Внимание: надо сначала вписать в конец что надо, а потом уже править джамп туда
| Сообщение посчитали полезным: |
Ранг: 271.5 (наставник), 12thx Активность: 0.15↘0 Статус: Участник 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.17↘0.01 Статус: Участник
|
Создано: 06 августа 2006 19:47 · Личное сообщение · #6
А я ему тоже самое и посоветовал
| Сообщение посчитали полезным: |
Ранг: 271.5 (наставник), 12thx Активность: 0.15↘0 Статус: Участник Packer Reseacher
|
Создано: 06 августа 2006 19:50 · Личное сообщение · #7
Veliant
Дело в том, что автор мог и неувидеть нули, почему читай упаковщики, дополнение значением байтов до значения выравнивание любое!
Тебе надо было описать мысли четче, а термин "выравнивание секций" может навести на хорошую мысль
----- My love is very cool girl. | Сообщение посчитали полезным: |
Ранг: 4.4 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 августа 2006 20:04 · Личное сообщение · #8
Ну короче я немного понял, но не совсем, но придется разбираться, дело в том, что я в асме не очень то шарю, но как я понял если он заменяет нужный код то нужно его переписать и сделать переход туда где он немного дельше...
| Сообщение посчитали полезным: |
Ранг: 4.4 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 августа 2006 20:05 · Личное сообщение · #9
theCollision пишет:
Вопрос автору: Я правильный телепат? ;)
Ну да что-то в этом роде...
| Сообщение посчитали полезным: |
Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник
|
Создано: 06 августа 2006 20:08 · Личное сообщение · #10
Мне кажется, что топикстартер просто вбивает мнемонику (!) в отладчике, чтобы пропатчить код. Естественно, вставляется jmp с абсолютной адресацией, который длиннее на 3 байта.
_dk_
замени первый байт (74h для je, 75h для jne) на EBh
| Сообщение посчитали полезным: |
 Ранг: 328.7 (мудрец), 73thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 06 августа 2006 20:14 · Личное сообщение · #11
а если то что затирается используется прогой раньше чем патченное место?
например:
a1: je n1 <- сюда jmp xxx
a2: jmp n2 - здесь затрем
а проге нужно и в a1 и в a2 попасть
| Сообщение посчитали полезным: |
Ранг: 271.5 (наставник), 12thx Активность: 0.15↘0 Статус: Участник Packer Reseacher
|
Создано: 06 августа 2006 20:19 · Личное сообщение · #12
Топиккреативер, ясно же сказал: Что есть команда je и не зависимо, что дальше,надо jmp! Задача поставлена изменить на jmp и не надо : "а если то что...", т.к. задача поставлена, потому что "а если то что..", то это уже другая задача!
Если я не прав по поводу задачи, пусть автор топика и поправит!
----- My love is very cool girl. | Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.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.17↘0.01 Статус: Участник
|
Создано: 06 августа 2006 20:39 · Личное сообщение · #14
Veliant
подумай
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.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.01↘0 Статус: Участник
|
Создано: 06 августа 2006 21:43 · Личное сообщение · #16
rmn пишет:
Мне кажется, что топикстартер просто вбивает мнемонику (!) в отладчике, чтобы пропатчить код. Естественно, вставляется jmp с абсолютной адресацией, который длиннее на 3 байта.
Переходи на нормальный отладчик, вроде OllyDbg, который подобными дефектами не страдает ;)
| Сообщение посчитали полезным: |
Ранг: 4.4 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 августа 2006 22:01 · Личное сообщение · #17
Ну в принципе я для примера привел je и jmp, вместо je может быть любой другой оператор перехода, ну на первый вопрос ответ я уже понял, что программ которые добавляет байты нет, а вот как это избежать придется все это читать и разбираться...
| Сообщение посчитали полезным: |
 Ранг: 251.8 (наставник), 17thx Активность: 0.12↘0 Статус: Участник Seeker
|
Создано: 06 августа 2006 22:58 · Поправил: =TS= · Личное сообщение · #18
_dk_
theCollision
Блин! rmn же ЯСНО написал: меняем первый байт на EB (опкод КОРОТКОГО jmp) и все!
_dk_
Насчет программ, вставляющих больше байт чем было забудь -- такого нет
вопрос решается только jmp (коротким или длинным) на неиспользуемое место с переносом тех инструкций, вместо которых написан jmp, в место перехода и с возвратом в конце вставки на следующую инструкцию после прыжка (как писал Veliant)
----- DREAMS CALL US | Сообщение посчитали полезным: |
Ранг: 271.5 (наставник), 12thx Активность: 0.15↘0 Статус: Участник Packer Reseacher
|
Создано: 06 августа 2006 23:02 · Личное сообщение · #19
=TS=
Надо не рыбу давать, а метод ловли рыбы! Что толку от рыбы, если человек завтра же тебя и спросит: "мне еще рыбы надо,есть?" Вот и показывать надо как эту рыбу сейчас поймали! Причем показывать так, чтобы не только карась, но и окунь поймался!
----- My love is very cool girl. | Сообщение посчитали полезным: |
 Ранг: 251.8 (наставник), 17thx Активность: 0.12↘0 Статус: Участник Seeker
|
Создано: 06 августа 2006 23:05 · Личное сообщение · #20
theCollision пишет:
Надо не рыбу давать, а метод ловли рыбы!
Вот ему и дали метод для замены перехода условных джампов на безусловные!
----- DREAMS CALL US | Сообщение посчитали полезным: |
Ранг: 4.4 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 07 августа 2006 00:27 · Поправил: _dk_ · Личное сообщение · #21
=TS= пишет:
Блин! rmn же ЯСНО написал: меняем первый байт на EB (опкод КОРОТКОГО jmp) и все!
А ну теперь понятно напримeр вместо 74 - je, написать EB - jmp...
| Сообщение посчитали полезным: |
Ранг: 271.5 (наставник), 12thx Активность: 0.15↘0 Статус: Участник Packer Reseacher
|
Создано: 07 августа 2006 07:57 · Личное сообщение · #22
_dk_
Хреново думаешь и поступаешь!!!
Как работает прыжок?  )) Просто берется значения jmp или jCCC, jnCCC и добавляется к eip, отсюда 1 бит идет как знаковый и того получается, что ты можешь на 128 байт назад прыгнуть или на 127 вперед. Следующий раз возникнет необходимость прыгнуть на более байт вперед\назад опять сюда??? Нет уж, лучше ты сразу пойми, как делать надо и с разными вариантами, полезней для головы!
----- My love is very cool girl. | Сообщение посчитали полезным: |