Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Разюор строки из драйвера
Посл.ответ Сообщение

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

Создано: 11 июня 2006 16:55
· Личное сообщение · #1

Пытаюсь узнать входит ли строка но почему то неработает этот код

if (strstr((PUCHAR)ObjectAttributes->ObjectName->Buffer, (PUCHAR)"1.exe")!=NULL)

Поджскажите подалуйста какими функциями еще можно делать тоже самое?



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

Создано: 11 июня 2006 18:05
· Личное сообщение · #2

напиши _T("1.exe")



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

Создано: 11 июня 2006 18:08
· Личное сообщение · #3

Если пишу

if (strstr((PUCHAR)ObjectAttributes->ObjectName->Buffer, _T("1.exe"))==NULL)

То компилятор ошибку выдает:

Compiling — driver.с for 1З86
driver.с<152> : error C4013: * _T* undefined; assuming extern returning int
driver.с<152> : error C4047: 'function' : 'const char **' differs in levels of in direction from 'int'



Ранг: -10.0 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 12 июня 2006 02:20
· Личное сообщение · #4

Аффтор (который не может отличить ansi строку от unicode), тебе срочно надо пить йад.



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

Создано: 12 июня 2006 12:21
· Личное сообщение · #5

В общем решил самостоятельно рабобрать строку, но опять никак

int i;
for (i=0; i++;(ObjectAttributes->ObjectName->Length-3)){
if ((WCHAR)ObjectAttributes->ObjectName->Buffer[i]==(WCHAR)'e')
if ((WCHAR)ObjectAttributes->ObjectName->Buffer[i+1]==(WCHAR)'x')
if ((WCHAR)ObjectAttributes->ObjectName->Buffer[i+2]==(WCHAR)'e')
DPRINT("NtOpenFile: %ws", ObjectAttributes->ObjectName->Buffer);

}
Должен если есть в имени файл 'exe' выводить сообщение, ан, нет...
Подскажите что не так, завтра диплом защищать - а этот драйвер все не зделаю никак



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

Создано: 12 июня 2006 13:09
· Личное сообщение · #6

Igit32 пишет:
все не зделаю

рановато диплом защищаешь, русский бы выучил для начала...



Ранг: 145.8 (ветеран)
Активность: 0.070
Статус: Участник
www.int3.net

Создано: 12 июня 2006 13:10
· Личное сообщение · #7

Igit32 пишет:
В общем решил самостоятельно рабобрать строку, но опять никак
[code skipped]

brain damage.



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

Создано: 12 июня 2006 13:49
· Личное сообщение · #8

Пристыдили меня действительно, ошибок наклепал - буду испраляться

Разобрался так:

int i=0;
while(i != ((ObjectAttributes->ObjectName->Length / sizeof(WCHAR))-5)){

if (ObjectAttributes->ObjectName->Buffer[i] == (WCHAR)'1')
if (ObjectAttributes->ObjectName->Buffer[i+1] == (WCHAR)'.')
if (ObjectAttributes->ObjectName->Buffer[i+2] == (WCHAR)'e')
if (ObjectAttributes->ObjectName->Buffer[i+3] == (WCHAR)'x')
if (ObjectAttributes->ObjectName->Buffer[i+4] == (WCHAR)'e')
DPRINT("NtOpenFile: %ws \n", ObjectAttributes->ObjectName->Buffer);
i++;

}



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 12 июня 2006 18:40
· Личное сообщение · #9

о да, это гораздо лучше.

а если строка будет длиной не 5 символов?


 eXeL@B —› Программирование —› Разюор строки из драйвера
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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