Сейчас на форуме: asfa (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Сохранение результата в файл |
Посл.ответ | Сообщение |
|
Создано: 11 апреля 2010 17:59 · Личное сообщение · #1 Форумчане выручайте. Вкратце взгляните на ![]() ![]() |
|
Создано: 11 апреля 2010 21:23 · Личное сообщение · #2 |
|
Создано: 12 апреля 2010 12:53 · Поправил: Spirt_Fire · Личное сообщение · #3 Год назад делал что то подобное. Делал jmp на свой код (дописывал в конце кода) Code:
Сейчас точно уже не помню всех параметров, но надо будет указать имя файла ( я его распологал тоже в конце кода), кол-во байт и откуда писать. В общем не сложно, когда маны под рукой. ![]() |
|
Создано: 13 апреля 2010 02:35 · Поправил: neoBlinXaker · Личное сообщение · #4 Archer не сомневаюсь что для тебя сейчас это кажется проще пареной репы, но ведь и ты тоже не родился с этими знаниями. В программировании я ещё не силён пока тяжко дается, поэтому и прошу помощи. Нашёл этот исходник как по вашему подойдёт? Если подойдёт, то подсобите как его переделать, ясно что надо добавить CreateFile,WriteFile,CloseHandle и ещё что-то, но вот куда это здесь воткнуть пока ума не приложу. Как я правильно понял если делать инжект получится привязка к проге а если хук то привязки не будет, это так? Code:
to Spirt_Fire Приведу участок кода: 004086A8 /$ 55 PUSH EBP 004086A9 |. 8BEC MOV EBP,ESP 004086AB |. 83C4 AC ADD ESP,-54 004086AE |. B8 8C2F4B00 MOV EAX,004B2F8C 004086B3 |. 53 PUSH EBX 004086B4 |. 56 PUSH ESI 004086B5 |. 57 PUSH EDI ; ntdll.7C910738 004086B6 |. E8 596C0800 CALL 0048F314 004086BB |. 33F6 XOR ESI,ESI 004086BD |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 004086C0 |. 50 PUSH EAX ; /FileName = NULL 004086C1 |. E8 A67E0A00 CALL <JMP.&KERNEL32.LoadLibraryA> -----Здесь загрузка этой длл 004086C6 |. 8BD8 MOV EBX,EAX 004086C8 |. 85DB TEST EBX,EBX 004086CA |. 74 68 JE SHORT 00408734 004086CC |. 68 382E4B00 PUSH 004B2E38 ; /ProcNameOrOrdinal = 004086D1 |. 53 PUSH EBX ; |hModule = 7FFDF000 004086D2 |. E8 D57D0A00 CALL <JMP.&KERNEL32.GetProcAddress> ------Получает адрес функции которая генерирует рандомные значения 004086D7 |. 8BF8 MOV EDI,EAX 004086D9 |. 68 442E4B00 PUSH 004B2E44 ; /ProcNameOrOrdinal = 004086DE |. 53 PUSH EBX ; |hModule = 7FFDF000 004086DF |. E8 C87D0A00 CALL <JMP.&KERNEL32.GetProcAddress> ------Получает адрес функции которая затем шифрует 004086E4 |. 8945 AC MOV DWORD PTR SS:[EBP-54],EAX 004086E7 |. 85FF TEST EDI,EDI ; ntdll.7C910738 004086E9 |. 0F95C0 SETNE AL 004086EC |. 83E0 01 AND EAX,1 004086EF |. 8BF0 MOV ESI,EAX 004086F1 |. 85C0 TEST EAX,EAX 004086F3 |. 74 39 JE SHORT 0040872E 004086F5 |. 66:C745 C0 08>MOV WORD PTR SS:[EBP-40],8 004086FB |. 68 48204C00 PUSH 004C2048 00408700 |. FFD7 CALL NEAR EDI -----ВОТ ОН ВЫЗОВ ФУНКЦИИ(АДРЕC ПОЛУЧЕН ВЫШЕ 004086D2) КОТОРЫЙ ВЕРНЕТ В ЕАХ ЗНАЧЕНИЕ 004B1000 00408702 |. 50 PUSH EAX -----Здесь как я понял делаем инжект 00408703 |. 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C] ; | 00408706 |. 52 PUSH EDX ; |Arg1 = 7C90EB94 00408707 |. E8 C40E0000 CALL 004095D0 0040870C |. 83C4 0C ADD ESP,0C делаю так 00408700 |. FFD7 CALL NEAR EDI ; ntdll.7C910738 00408702 E9 61860A00 JMP 004B0D68 Прыжок на инжект 00408707 |. E8 C40E0000 CALL 004095D0 а вот это куда девать? 00408702 |. 50 PUSH EAX -----Здесь как я понял делаем инжект 00408703 |. 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C] ; | 00408706 |. 52 PUSH EDX сразу вставлять в начало инжекта или в конец? Или это без разницы куда вставить. Пока только создаётся файл а дальше крешится прога на этом участке кода(из твоего кода)? 004B29C9 A3 F0FA4C00 MOV DWORD PTR DS:[4CFAF0], EAX Адрес приёмник разумеется я поправил на свой в пустую часть где нет кода. А это обязательно добавлять? 004B299A > \60 PUSHAD 004B299B . 50 PUSH EAX 004B299C . 57 PUSH EDI 004B299D . 8BF8 MOV EDI, EAX 004B299F . B9 FFFFFFFF MOV ECX, -1 004B29A4 . B0 00 MOV AL, 0 004B29A6 . F2:AE REPNE SCAS BYTE PTR ES:[EDI] 004B29A8 . 2BF8 SUB EDI, EAX 004B29AA . 8BDF MOV EBX, EDI 004B29AC . 5F POP EDI 004B29AD . 58 POP EAX 004B29AE . 8BF0 MOV ESI, EAX 004B29B0 90 NOP 004B29B1 90 NOP ![]() |
|
Создано: 13 апреля 2010 12:35 · Поправил: Spirt_Fire · Личное сообщение · #5 Прошу прощения вчера привел код который был в процессе разработки. ![]() Сегодня нашел ту прогу, выдернул из нее код нормальный, добавил коментарии (что помню). Начальную часть тебе писать не надо, это я вычислял сколько байт нужно записать, потому что кол-во выходных данных менялось. Поскольку ты знаешь начало буфера и сколько писать, задай конкретно в параметрах функции. Самое главное, в конце не забудь выровнять стек(если будешь туда что то для своих нужд пихать), что бы он был такой же как до твоего прыжка. Думаю коментарии будут понятны. ![]() Code:
Забыл сказать. Желательно чтобы эти функции были в импорте твоей проги, а иначе придется добавлят вручную. ![]() |
|
Создано: 13 апреля 2010 22:39 · Личное сообщение · #6 |
|
Создано: 14 апреля 2010 04:36 · Личное сообщение · #7 |
|
Создано: 14 апреля 2010 17:25 · Личное сообщение · #8 |
|
Создано: 14 апреля 2010 18:16 · Личное сообщение · #9 |
|
Создано: 14 апреля 2010 19:08 · Личное сообщение · #10 сей код из библиотеки Code:
![]() |
|
Создано: 15 апреля 2010 06:10 · Поправил: NikolayD · Личное сообщение · #11 на всякий случай статья по инжекту --> cracklAB.RU <-- и здесь тоже для тебя --> "Движки для установки перехватов" <-- ![]() |
|
Создано: 19 апреля 2010 01:11 · Личное сообщение · #12 NikolayD спасибо конечно но я это уже видел. ЕЩЁ РАЗ ФОРУМЧАНЕ У КОГО ЕСТЬ ИСХОДНИК ХУКА С ФУНКЦИЕЙ СОХРАНЕНИЯ В ФАЙЛ прошу выложить или КТО СМОЖЕТ ПОМОЧЬ ДОРАБОТАТЬ ИСХОДНИК ИЗ МОЕГО ; ПОСТА также прошу помочь, если Archer пишет: Простейший перехват функции из длл и запись в файл конечного результата, гугл тебе в зубы и мсдн. Сложности вообще не вижу., странно однако никто помочь не может, похоже что это не так. ![]() |
|
Создано: 19 апреля 2010 06:59 · Поправил: Spirt_Fire · Личное сообщение · #13 |
|
Создано: 19 апреля 2010 17:16 · Личное сообщение · #14 Да нет, просто никто не хочет делать твою работу за тебя. Детский сад этот стал меня мальца утомлять. Уже всё кинули, он всё не успокаивается и канючит вместо того, чтобы головой подумать. Берёшь и пишешь длл с функцией/базонезависимый кусок кода, который пишет в файл (CreateFile, WriteFile, CloseHandle). Если скажешь, что примера кода записи в файл нет нигде, я тебя забаню на веки вечные. Потом длл/кусок кода пишешь в нужное место, перехват функций тебе в зубы. Если скажешь, что перехвата функций нигде нет, читай выше. В чём проблема-я вообще не понимаю. Видимо, врождённая лень. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Сохранение результата в файл |