Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Вопрос по асму
Посл.ответ Сообщение

Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 08 сентября 2007 20:58
· Личное сообщение · #1

Иногда встречаю инструкции, смысл которых мне непонятен.
Как пример,привожу начало функции CreateFileA из kernel32.dll:
7C810976 MOV EDI,EDI =============> !
7C810978 PUSH EBP
7C810979 MOV EBP,ESP
7C81097B SUB ESP,58
7C81097E EAX,DWORD PTR SS:[EBP+18]


Интересует инструкция MOV EDI,EDI... Разве эта инструкция хоть что нибудь делает?




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 08 сентября 2007 21:48
· Личное сообщение · #2

tempread
Это во втором сервиспаке специально ввели данную инструкцию, чтобы приложениям было удобнее перехватывать апи функции без использования дизассемблера длин.(смотря каким приложениям)
7C810976 MOV EDI,EDI =============> !
7C810978 PUSH EBP
7C810979 MOV EBP,ESP
7C81097B
итого 5 байт,для jmp-а вполне хватает.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 09 сентября 2007 16:40
· Личное сообщение · #3

tnt17 пишет:
чтобы приложениям было удобнее перехватывать апи функции без использования дизассемблера длин.

а нах дизасм длин для перехвата? влепил джамп, запомнил байты и .т.п...



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 09 сентября 2007 16:49
· Личное сообщение · #4

tnt17

А может это просто компилятор седьмой так компилирует? ;)

sniperZ

Ну-ну, влепи, влепи джамп.

-----
Security through obscurity is just an illusion





Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 10 сентября 2007 02:12 · Поправил: tnt17
· Личное сообщение · #5

sniperZ
LOL
pushick пишет:
А может это просто компилятор седьмой так компилирует? ;)

Oni vidimo gotovili dlya svoego antivirusa "udobniy" kod,chtobi perehvativat' bilo legshe. )

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 14.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 17 сентября 2007 16:12
· Личное сообщение · #6

не парься и не напрегай мозги ятакое часто тоже вижу!!
mov eax,dword ptr[ebp+10h]
mov dword ptr[ebp+10h],eax


ето происходит потому что что прога написана на СИ++ или на делфи и просто компилятор так ее распознает! нечего страшного в етом нету ето не тока в кернел ето почьти везде такое встречаеться ето называеться не оптимизированый код!!! в студии есть целая фича по оптимизации кода!!



Ранг: 16.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 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, строки нет! (по умолчанию), но гадит другими помоями (вообщем мягкожопые АХТУНГИ!, сними хрен поймешь, как вступать и компилировать)…
Если можно на пальцах и подробнее, в каких файлах и что нужно изменить чтобы этих строк и прочей гадости не было, мну танцевал с бубном, так ничего и не получилось!?
Вопрос задан у ньюбов и частично относится к сабжу, прошу сильно на мну не серчайте и поделитесь опытом.




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 24 сентября 2007 10:25
· Личное сообщение · #8

Prince[ART]
Смотри мой пост на руткитс:
rootkits.ru/viewtopic.php?id=59&p=2

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 16.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 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 —› Вопросы новичков —› Вопрос по асму
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати