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

 eXeL@B —› Основной форум —› Аналог GetLastError для NtLastError
Посл.ответ Сообщение

Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 11 сентября 2010 20:45
· Личное сообщение · #1

сабж.
В импорте из kernel32.dll сперта функция, возвращает просто дворд. Судя по всему это NtStatus/NtLastError (по рефам функции анализируют 0xc0000000, 0x80000000). Но это не GetLastError. Есть какой-то аналог в kernel32.dll для NtLastError, а не Win32LastError?
Code:
  1. 008D87CC NtLastError dd 0A280105h
  2. ...
  3. 009102FB mov     eax, ds:NtLastError
  4. ...
  5. 008F38F8 mov     eax, ds:NtLastError
  6. 008F38FD and     eax, 0C0000000h
  7. 008F3902 cmp     eax, 80000000h
  8. 008F3907 jnz     short loc_8F3910


-----
старый пень





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 11 сентября 2010 22:08
· Личное сообщение · #2

Поищи такой код в кернеле, не похоже на начало функции. Нужен файл или что-то ещё.



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 11 сентября 2010 22:23
· Личное сообщение · #3

ERROR_SEVERITY_WARNING.



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 11 сентября 2010 23:20
· Личное сообщение · #4

Clerk
Спасибо, но расшифровка кода не нужна.

Archer
Функция сперта не точно. Это часть конверта.

Может быть в импорте две одинаковых функции?

-----
старый пень




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 12 сентября 2010 00:00
· Личное сообщение · #5

А прогу приложить никак?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 сентября 2010 00:24
· Личное сообщение · #6

r_e пишет:
Может быть в импорте две одинаковых функции?

Вполне.

-----
Yann Tiersen best and do not fuck





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 12 сентября 2010 00:39 · Поправил: ClockMan
· Личное сообщение · #7

r_e пишет:
008D87CC NtLastError dd 0A280105h

Это kernel32.GetVersion под хрюшой копаешь
PE_Kill Какие люди в голлевуде

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 12 сентября 2010 00:42 · Поправил: Clerk
· Личное сообщение · #8

r_e
Тогда что вам нужно ?
Вы выдрали из либы проверку типа статуса(из ReadFile() или TransactNamedPipe()). А как вопрос написали вобще какойто бред. В экспорте Kernel32 нет функций возвращающих статус. Ну косвенно может и есть, но предназначенных для его получения нет. Да и они не нужны, так как есть нэйтивная RtlGetLastNtStatus().
И что за ахинея с "NtStatus/NtLastError" ?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 12 сентября 2010 09:22
· Личное сообщение · #9

Clerk
Ну не надо какашками бросаться. Вот ClockMan написал прекрасный ответ.

-----
старый пень




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 12 сентября 2010 11:01
· Личное сообщение · #10

Code:
  1. $ ==>    7C81126A GetVersion        64:A1 18000000             mov eax,dword ptr fs:[18]
  2. $+6      7C811270                   8B48 30                    mov ecx,dword ptr ds:[eax+30]
  3. $+9      7C811273                   8B81 B0000000              mov eax,dword ptr ds:[ecx+B0]
  4. $+F      7C811279                   0FB791 AC000000            movzx edx,word ptr ds:[ecx+AC]
  5. $+16     7C811280                   83F0 FE                    xor eax,FFFFFFFE
  6. $+19     7C811283                .  C1E0 0E                    shl eax,0E
  7. $+1C     7C811286                .  0BC2                       or eax,edx
  8. $+1E     7C811288                .  C1E0 08                    shl eax,8
  9. $+21     7C81128B                .  0B81 A8000000              or eax,dword ptr ds:[ecx+A8]
  10. $+27     7C811291                .  C1E0 08                    shl eax,8
  11. $+2A     7C811294                .  0B81 A4000000              or eax,dword ptr ds:[ecx+A4]
  12. $+30     7C81129A                .  C3                         ret





Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 12 сентября 2010 11:36 · Поправил: Alchemistry
· Личное сообщение · #11

r_e
И чем он прекрасен? Не в тему чувак написал, клерк прав. Это TransactNamedPipe/ReadFile.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 12 сентября 2010 12:19
· Личное сообщение · #12

r_e
Кинь в ЛС файл лучше.



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 12 сентября 2010 12:48
· Личное сообщение · #13

Alchemistry
Он прекрасен тем, что человек точно знал какая функция из kernel32.dll в каких обстоятельствах может вернуть указанную в первом посте константу. И несмотря на мою неправильную идентификацию переменной дал верный ответ.

Кончайте флудить.

int
Смотри ПМ.

-----
старый пень




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 12 сентября 2010 13:21
· Личное сообщение · #14

r_e
Какую есчо константу, код GetVersion() в #10.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 12 сентября 2010 13:24
· Личное сообщение · #15

Clerk
спустись с небес до нас бренных и взгляни внимательно на первый пост:

0A280105h

http://yandex.ru/yandsearch?text=0A280105&lr=213

-----
[nice coder and reverser]




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 12 сентября 2010 15:53
· Личное сообщение · #16

Hellspawn
Я рассматривал константу исходя из предположения что это код ошибки. Не догадался что это версия.
ClockMan +10 wmz в ПМ

-----
старый пень




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 12 сентября 2010 15:57
· Личное сообщение · #17

r_e
Почитай ещё статьи по аспру. В этом проте чуть ли не впервые начали красть простые и константные функции. Их не так много.


 eXeL@B —› Основной форум —› Аналог GetLastError для NtLastError
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати