Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Брутфорсер на Асме |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 14 октября 2006 03:40 · Поправил: RUffex · Личное сообщение · #1 «Этот топик просвещается всем тем, кто видел на экране страшное «Черное окно», обрывающее все наивные детские мечты. Своим невыносимым «Enter Password» оно убивало в нас радость и душевный покой. Многие наши товарищи пытались избавиться от него, долгими зимними вечерами, набирая все пришедшие в голову комбинации, но лишь единицы этих великих людей дожили до наших дней, нервно выстукивая чечётку пальцами уже не только на клавиатуре, но и на лавочках, в подвалах, на вокзале. Не знали она, бедные, о том, что процесс подбора пароля можно автоматизировать, программно обращаясь к окнам и их элементам. Это совсем легко, надо лишь освоить нехитрые принципы взаимодействия окон» (журнал «Хакер»)» Респект низкоуровневые кодеры! Я начал писать свой переборщик паролей (можно и для брутфорса рег.ключей юзать). Какие функции необходимо использовать? Алгоритм такой: А) находим окно для ввода пароля Б) находим EditBox В) генерируем пароль Г) помещаем его в EditBox Д) Эмулируем нажатие кнопки ОК Е) Если вылетает MessageBox, проверяем по тексту сообщения Угадали ( переход на п. И) не угадали ( переход на п. Ж) Ж) Закрываем ругательство З) Вычеркиваем неправильный пароль ( переход на п. Б) И) Сообщаем радостное известие с правильным паролем A) RegText db "Register Software",0 invoke FindWindow, NULL,OFFSET RegText test eax,eax jnz found Б) found: invoke FindWindowEx,NULL,NULL,EditBox,ADDR RegText ; Правильно ли я указываю параметры этой функции? Не компиллится что-то... |
|
Создано: 14 октября 2006 03:48 · Поправил: Cigan · Личное сообщение · #2 |
|
Создано: 14 октября 2006 03:51 · Личное сообщение · #3 это плохой вариант. будешь терять время из-за работы апи. самый правильный вариант - инжектить брут в процесс и передавать из него управление сразу на функцию проверки. А из неё обратно в брут при неправильном пассе. Не забывай, что иногда делают закрывающееся окно ввода номера при направильном вводе, проверку при загрузке, паузу между вводами. ИМХО, не трать время а фигню ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 14 октября 2006 04:01 · Личное сообщение · #4 Rascal пишет: самый правильный вариант - инжектить брут в процесс и передавать из него управление сразу на функцию проверки. А из неё обратно в брут при неправильном пассе. Интересно… где можно про это почитать? Rascal пишет: иногда делают закрывающееся окно ввода номера при направильном вводе, проверку при загрузке, паузу между вводами Иногда, да не всегда. Rascal пишет: не трать время а фигню Хочу хоть чуть-чуть научиться программировать на ассемблере. Делать проги по книжкам и туторам – неинтересно, а вот самому до чего-то дойти – другое дело. Брутфорсер в моем случае – хороший вариант. |
|
Создано: 14 октября 2006 04:20 · Личное сообщение · #5 Rascal пишет: самый правильный вариант - инжектить брут в процесс и передавать из него управление сразу на функцию проверки. В случае универсального подборщика не катит. Например, в прогу вводится имя класса окошка, время задержи и т.д. Но для конкретной проги - прекрасная оптимизация. Исключения могут составить функции проверки, изменяющие глобальные данные, самомодифицирущийся код и т.д. RUffex пишет: Делать проги по книжкам и туторам – неинтересно, а вот самому до чего-то дойти – другое дело. ЛОЛ. Сама идея такого подбора весьма нетривиальна, где ж здесь ты сам до чего-то дошел? |
|
Создано: 14 октября 2006 04:23 · Личное сообщение · #6 RUffex пишет: Интересно… где можно про это почитать? А чё читать - ищешь в программе процедуру проверки, смотришь параметры, смотришь что на выходе. Далее дописываешь куда хчешь код переборщика, и делаешь переход из переборщика на проверку, с проверку на переборщик. При правильном переход на конец. Всё. RUffex пишет: Хочу хоть чуть-чуть научиться программировать на ассемблере. Чё на нём программить. Почитай обсуждение --> Link <-- ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 14 октября 2006 04:27 · Личное сообщение · #7 HoBleen пишет: В случае универсального подборщика не катит Универсальный подборщик такого плана как хочет RUffex не будет быстрым. HoBleen пишет: Исключения могут составить функции проверки, изменяющие глобальные данные, самомодифицирущийся код и т.д. Всё относительно. Таких штук меньше, чем проверок при запуске и закрытий окон. ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 14 октября 2006 04:46 · Поправил: Flint · Личное сообщение · #8 RUffex Тут посмотри [url=http://wasm.ru/print.php?article=cycle_pwd ]http://wasm.ru/print.php?article=cycle_pwd [/url] А еще вот на досуге накатал на скорую руку. (Сильно не пинать!) Код Brute-forcera для перебора пароля из 9 символов Для того чтоб это работало необходимо найти место где берется пароль и где проверяется 00407D28 |. MOV EDI,EAX 00407D2A |. PUSH 400 ; /Count = 400 (1024.) 00407D2F |. PUSH EDI ; |Buffer 00407D30 |. PUSH 0BB9 ; |ControlID = BB9 (3001.) 00407D35 |. MOV EAX,DWORD PTR DS:[40A850] ; | 00407D3A |. PUSH EAX ; |hWnd => 00E10388 ('[Cracking]',class='#32770') 00407D3B |. CALL 004045DC ; \GetDlgItemTextA 00407D40 |. CMP BYTE PTR DS:[EDI],0 EDI = 0090083C Здесь видно что фукция GetDlgItemTextA берет введенный пароль и возвращает его в регистре EDI. Следует запомнить два адреса. 1. Адрес следующей инструкции - 00407D40, он нам понадобится для того чтобы на него сделать jmp после инкремента пароля. 2. Адрес хранимого пароля = 0090083C, он нужен для того чтобы работать с введенным паролем. Теперь доходим до места условного перехода, где решается верный/неверный пароль. 00407F77 JNZ SHORT 00407FA4 Испралять его не нужно, а вот место куда он указывает: 00407FA4, следует осмотреть. Тут мы попадаем в функцию SetDlgItemTextA, которая сообщает нам что пароль не верный. Делаем так. Меняем первую инструкцию функции SetDlgItemTextA на JMP XXXX, где, XXXX - адрес процедуры инкремента пароля. Теперь, если пароль неверный происходит джамп на инкремент пароля. Адресс XXXX, выбирается просто: любое пустое место в памяти программы, в которое поместится код инкремента пароля. В моей программе он был такой: ________________________________________________________________ 004094A0 PUSHAD ; Следует сохранить все регистры в стеке 004094A1 MOV EAX,90083C ; <<<<< Сюда помещаем адрес введенного пароля 004094A6 NOP 004094A7 XOR CL,CL 004094A9 MOV CL,BYTE PTR DS:[EAX+8] ; помещаем 9 символ в cl 004094AC CMP CL,0FF ; сравниваем не равен ли он ff 004094AF JE SHORT 004094BB ; если равен переходим на обнуление 004094B1 INC CL ; иначе увеличиваем ASCII код символа на 1 004094B3 MOV BYTE PTR DS:[EAX+8],CL ; и записываем на место 9 символа пароля 004094B6 JMP 00409574 ; Идем к выходу з цикла 004094BB MOV BYTE PTR DS:[EAX+8],20 ; Обнуляем 9 символ 004094BF XOR CL,CL ; Обнуляем регистр cl 004094C1 MOV CL,BYTE PTR DS:[EAX+7] ; и переходим к 8 символу 004094C4 CMP CL,0FF ; и т. д. 004094C7 JE SHORT 004094D3 004094C9 INC CL 004094CB MOV BYTE PTR DS:[EAX+7],CL 004094CE JMP 00409574 004094D3 MOV BYTE PTR DS:[EAX+7],20 004094D7 XOR CL,CL 004094D9 MOV CL,BYTE PTR DS:[EAX+6] 004094DC CMP CL,0FF 004094DF JE SHORT 004094EB 004094E1 INC CL 004094E3 MOV BYTE PTR DS:[EAX+6],CL 004094E6 JMP 00409574 004094EB MOV BYTE PTR DS:[EAX+6],20 004094EF XOR CL,CL 004094F1 MOV CL,BYTE PTR DS:[EAX+5] 004094F4 CMP CL,0FF 004094F7 JE SHORT 00409503 004094F9 INC CL 004094FB MOV BYTE PTR DS:[EAX+5],CL 004094FE JMP SHORT 00409574 00409500 NOP 00409501 NOP 00409502 NOP 00409503 MOV BYTE PTR DS:[EAX+5],20 00409507 XOR CL,CL 00409509 MOV CL,BYTE PTR DS:[EAX+4] 0040950C CMP CL,0FF 0040950F JE SHORT 0040951B 00409511 INC CL 00409513 MOV BYTE PTR DS:[EAX+4],CL 00409516 JMP SHORT 00409574 00409518 NOP 00409519 NOP 0040951A NOP 0040951B MOV BYTE PTR DS:[EAX+4],20 0040951F XOR CL,CL 00409521 MOV CL,BYTE PTR DS:[EAX+3] 00409524 CMP CL,0FF 00409527 JE SHORT 00409533 00409529 INC CL 0040952B MOV BYTE PTR DS:[EAX+3],CL 0040952E JMP SHORT 00409574 00409530 NOP 00409531 NOP 00409532 NOP 00409533 MOV BYTE PTR DS:[EAX+3],20 00409537 XOR CL,CL 00409539 MOV CL,BYTE PTR DS:[EAX+2] 0040953C CMP CL,0FF 0040953F JE SHORT 0040954B 00409541 INC CL 00409543 MOV BYTE PTR DS:[EAX+2],CL 00409546 JMP SHORT 00409574 00409548 NOP 00409549 NOP 0040954A NOP 0040954B MOV BYTE PTR DS:[EAX+2],20 0040954F XOR CL,CL 00409551 MOV CL,BYTE PTR DS:[EAX+1] 00409554 CMP CL,0FF 00409557 JE SHORT 00409563 00409559 INC CL 0040955B MOV BYTE PTR DS:[EAX+1],CL 0040955E JMP SHORT 00409574 00409560 NOP 00409561 NOP 00409562 NOP 00409563 MOV BYTE PTR DS:[EAX+1],20 00409567 XOR CL,CL 00409569 MOV CL,BYTE PTR DS:[EAX] 0040956B CMP CL,0FF 0040956E JE SHORT 0040957F ; Выход из цикла, если пароль не найден 00409570 INC CL 00409572 MOV BYTE PTR DS:[EAX],CL 00409574 POPAD ; Восстанавливаем регистры 00409575 MOV EDI,90083C ; Записываем измененный пароль в EDI 0040957A JMP 00407D40 ; Выход из цикла инкремента пароля на следующую проверку. 00407D40 - адресс инструкции следующей после GetDlgItemTextA. ______________________________________________________________________ ____________________ 00407F77 JNZ SHORT 00407FA4 Условный переход который определяет верный/неверный пароль Следующие за ним инструкции следует поменять на: PUSH 0 ; /Style = MB_OK|MB_APPLMODAL PUSH 403030 ; |Title = "Пароль найден" <<<< Пишем эту строку где-нибудь в пямяти PUSH 90083C ; |Text = "" <<<< Адрес буфера введеного пароля PUSH 0 ; |hOwner = NULL CALL 004010EA ; \MessageBoxA Чтобы после нахождения верного пароля появился MessageBoxA ----- Nulla aetas ad discendum sera |
|
Создано: 14 октября 2006 05:00 · Личное сообщение · #9 Rascal пишет: ищешь в программе процедуру проверки, смотришь параметры, смотришь что на выходе. Далее дописываешь куда хчешь код переборщика, и делаешь переход из переборщика на проверку, с проверку на переборщик. При правильном переход на конец. Всё. Попробую. HoBleen пишет: где ж здесь ты сам до чего-то дошел Я не беру готовых вариантов. Думаю сам. Может и иду по уже проторенной дороге, зато САМ. |
|
Создано: 14 октября 2006 05:34 · Личное сообщение · #10 RUffexRUffex пишет: Алгоритм такой: А) находим окно для ввода пароля Б) находим EditBox В) генерируем пароль Г) помещаем его в EditBox Д) Эмулируем нажатие кнопки ОК Е) Если вылетает MessageBox, проверяем по тексту сообщения Угадали ( переход на п. И) не угадали ( переход на п. Ж) Ж) Закрываем ругательство З) Вычеркиваем неправильный пароль ( переход на п. Б) И) Сообщаем радостное известие с правильным паролем для такого алгоритма знание ассемблера необязательно. Есть утилита Inqsoft Sign of Misery 2.7, на ней можно скрипт забабахать и все. Правда скорость перебора будет очень низкая. ----- Nulla aetas ad discendum sera |
|
Создано: 14 октября 2006 05:58 · Личное сообщение · #11 |
|
Создано: 14 октября 2006 07:40 · Личное сообщение · #12 |
|
Создано: 14 октября 2006 08:21 · Личное сообщение · #13 Dark Star Сам напиши для начала. Все знают как быть, видимо кроме тебя. На счёт большой - да. bloom пишет: такой переборщик уже есть Молодёж считает хорошим путём учения программингу из-обретение велосипеда. И в некоторых случаях это правильный выбор ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 14 октября 2006 08:32 · Личное сообщение · #14 |
|
Создано: 14 октября 2006 11:19 · Личное сообщение · #15 Dark Star Сколько тебе лет? Если ты такого не можешь написать, значит или у тебя слишком мало опыта, или мозга. Без обид. Простейшая алгоритмическая задачка. Вариантов решения немало. Сам придумать можешь которые. Если такое не написать, то программингом заниматься не советую. ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 14 октября 2006 11:32 · Личное сообщение · #16 Ну да а если английский,русский алфавит,символы,цифры. Если я вообще брутов раньше не писал то что? Неделю что сидеть и разбираться и накатаю на хуе... тучу страниц текста и бедет работать Ruffex хочет написать.Нах он такой нужен проще уж ломануть или качнуть готовый. Потому и спрашиваю что хочу увидеть наиболее оптимизированный и быстрый. |
|
Создано: 14 октября 2006 12:18 · Личное сообщение · #17 |
|
Создано: 14 октября 2006 12:23 · Личное сообщение · #18 Dark Star пишет: Если я вообще брутов раньше не писал то что? Написать для понятия работы и посмотреть как сможешь улучшить своё. Очень полезное занятие. Dark Star пишет: Потому и спрашиваю что хочу увидеть наиболее оптимизированный и быстрый. Нет предела совершенству. Смотри на васме. Там была тема и обсуждение активное. Вроде в статьях ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 14 октября 2006 14:29 · Личное сообщение · #19 |
|
Создано: 14 октября 2006 19:21 · Поправил: RUffex · Личное сообщение · #20 |
|
Создано: 15 октября 2006 03:24 · Личное сообщение · #21 |
|
Создано: 15 октября 2006 04:45 · Личное сообщение · #22 |
|
Создано: 15 октября 2006 07:56 · Личное сообщение · #23 |
|
Создано: 15 октября 2006 08:20 · Личное сообщение · #24 |
|
Создано: 15 октября 2006 08:23 · Личное сообщение · #25 Dark Star пишет: Ну а никто нихочет поделиться как будто статья по распаковке StarForce. Хоть бы просто выложили А самому влом? [HIGHLIGHT=c] hWnd = FindWindow("WndClass", "Enter pass:"); if (hWnd) { hEdit = FindWindow(hWnd, 0, "WndClass", 0); if (hWnd){ GenPass(lpszPass); SetWindowText(hEdit, lpszPass); SendMessage(hEdit, WM_CLICK, 0 ,0); } } [/HIGHLIGHT] Тебе продолжить или как-нибудь сам? |
|
Создано: 15 октября 2006 08:32 · Личное сообщение · #26 |
|
Создано: 15 октября 2006 08:40 · Личное сообщение · #27 |
|
Создано: 15 октября 2006 10:57 · Поправил: Rascal · Личное сообщение · #28 HoBleen Бсдишь. 7 символов цифри букв английского алфавита (болшие только если учитывать)есть 78364164096 вариантов. В секунду можно перебирать без математики с миллион и более. Получаем где-то 21 час. Правда это примерно. Как обычно всё разнится от программы к программе. А интегрирование не юзается, не пугай народ. На разработку много времени уйдёт. Проще множественное хэширование юзать. Dark Star пишет: Я не отказываюсь но по примеру лучше учиться и быстрее. Не в данной прграмме. Если ты знаешь как представлены в памяти компьютера строки, тебе больше не зачем что-либо смореть ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 15 октября 2006 12:34 · Личное сообщение · #29 |
|
Создано: 15 октября 2006 12:43 · Личное сообщение · #30 Dark Star Нету у меня исходников. Не было поводов писать. Хотя пригодился бы для тестирования сортировок и добавления элементов в структуры данных. Ты попробуй сам написать. Потрать время. Как мне понадобится ,поверь, первым делом напишу свой потом уже буду искать, потому как мне лично интересно придумать свой алго и посмотреть его с другими. ----- Недостаточно только получить знания:надо найти им приложение |
. 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Брутфорсер на Асме |