![]() |
eXeL@B —› Вопросы новичков —› Вопрос по асму |
Посл.ответ | Сообщение |
|
Создано: 08 сентября 2007 20:58 · Личное сообщение · #1 Иногда встречаю инструкции, смысл которых мне непонятен. Как пример,привожу начало функции CreateFileA из kernel32.dll: 7C810976 MOV EDI,EDI =============> !
Интересует инструкция MOV EDI,EDI... Разве эта инструкция хоть что нибудь делает? ![]() |
|
Создано: 08 сентября 2007 21:48 · Личное сообщение · #2 tempread Это во втором сервиспаке специально ввели данную инструкцию, чтобы приложениям было удобнее перехватывать апи функции без использования дизассемблера длин.(смотря каким приложениям) 7C810976 MOV EDI,EDI =============> ! 7C810978 PUSH EBP 7C810979 MOV EBP,ESP 7C81097B итого 5 байт,для jmp-а вполне хватает. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 09 сентября 2007 16:40 · Личное сообщение · #3 |
|
Создано: 09 сентября 2007 16:49 · Личное сообщение · #4 |
|
Создано: 10 сентября 2007 02:12 · Поправил: tnt17 · Личное сообщение · #5 |
|
Создано: 17 сентября 2007 16:12 · Личное сообщение · #6 не парься и не напрегай мозги ятакое часто тоже вижу!! mov eax,dword ptr[ebp+10h] mov dword ptr[ebp+10h],eax ето происходит потому что что прога написана на СИ++ или на делфи и просто компилятор так ее распознает! нечего страшного в етом нету ето не тока в кернел ето почьти везде такое встречаеться ето называеться не оптимизированый код!!! в студии есть целая фича по оптимизации кода!! ![]() |
|
Создано: 24 сентября 2007 04:13 · Личное сообщение · #7 /* Вопрос первый к Archer */ db 0,0,0,0,0,0 mov edi,edi push ebp mov ebp,esp mov ecx,[ebp+0Ch] and dword ptr [ecx+18h],00000000h and dword ptr [ecx+1Ch],00000000h xor dl,dl call [ntoskrnl.exe!IofCompleteRequest] xor eax,eax pop ebp retn 08h db 0CCh,0CCh,0CCh,0CCh,0CCh,0CCh этот код из твоего драйвера FRDTSC.SYS Почему рылся в драйвере, у мну трабла… неожиданно через какое-то время происходит ребут(это скорее всего частный случай, поэтому не будем на это обращать внимание), искал багу в несовместимости с моими дровами или типа того что-то, ну вот и обратил на такой отстойный код оставленный компилятором, хочется узнать какой именно версией DDK компилился драйвер? (интересно будет наверно не только мну, но и остальным тоже…) Заодно узнаем тайну этой ужасной mov edi,edi Для примера идентичный код скомпилированный Windows Server 2003 DDK C:\WINDDK\3790 free W2K - все стандартно через батник (make.bat), makefile, sources IDE юзаю Source Insight 3(последнюю) mov ecx,[esp+08h] and dword ptr [ecx+18h],00000000h and dword ptr [ecx+1Ch],00000000h xor dl,dl call [ntoskrnl.exe!IofCompleteRequest] xor eax,eax retn 08h db 0CCh ; ¦ /* Вопрос второй к tnt17 */ Что нужно сделать, чтобы эта отладочная строка ('C:\D\Research\Archive\FakeRDTSC\i386\FRDTSC.pdb',0) не появлялась в драйвере после компиляции? Пробовал 2600, строки нет! (по умолчанию), но гадит другими помоями (вообщем мягкожопые АХТУНГИ!, сними хрен поймешь, как вступать и компилировать)… Если можно на пальцах и подробнее, в каких файлах и что нужно изменить чтобы этих строк и прочей гадости не было, мну танцевал с бубном, так ничего и не получилось!? Вопрос задан у ньюбов и частично относится к сабжу, прошу сильно на мну не серчайте и поделитесь опытом. ![]() |
|
Создано: 24 сентября 2007 10:25 · Личное сообщение · #8 |
|
Создано: 24 сентября 2007 17:12 · Личное сообщение · #9 tnt17 гы, точна, как ножницами все отрезало! зачОт! надо просто в файле makefile.new закомментировать символом # строку LINKER_DBG_SECTION=-debug:FULL и все будет адцки красиво Этот rain наверное вместе с самим Биллом вступал и компилировал! вот еще нашел (скорее всего, это его пост) www.wasm.ru/forum/viewtopic.php?id=22365 Там он учит элиту, как ASM сырки в наглую прикручивать к СИ и статистически прилинковать к драйверу (альтернатива __asm), про х64 тоже не забыл словом апмолвиццо! ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Вопрос по асму |