Русский / Russian English / Английский

Сейчас на форуме: -Sanchez-, SSmith (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Windows XP 64Bit
Посл.ответ Сообщение


Ранг: 67.4 (постоянный)
Статус: Участник

Создано: 14 октября 2009 18:32 · Поправил: Sunzer New!
Цитата · Личное сообщение · #1

Code:
  1. MOV EAX,FS:[8]
  2. XOR AX,AX


Обычно после этого кода в EAX = 120000h

Поставил на VirtualBox windows xp 64bit
И вот вопрос, под олей после исполнения этого кода EAX = 120000h
а без оли если запустить программу из атача EAX = 2C0000h
Какой то баг или антиотладка новая?


в атаче программа выводящая результат исполнения кода.
Кто может, скажите какой результат выдается на реальных 64 битных windows?

{ Атач доступен только для участников форума } - test_64.exe


Ранг: 990.3 (! ! !)
Статус: Модератор
Author of DiE

Создано: 14 октября 2009 18:59 · Поправил: Модератор New!
Цитата · Личное сообщение · #2

там вроде как указатель на участок памяти, запустил пару ехе и глянул, даже у меня
адрес отличается (это про обычность 120000h)
Code:
  1. Address=0012C000
  2. Size=00004000 (16384.)
  3. Contains=stack of main thr3ad
  4. ...
  5. Memory map, item 3
  6. Address=0006D000
  7. Size=00003000 (12288.)
  8. Contains=stack of main thr3ad

ну а с ольгой или без ольги, хз чё там в 64 намутили, в 32 ведь всё норм


Ранг: 67.4 (постоянный)
Статус: Участник

Создано: 14 октября 2009 19:01 · Поправил: Sunzer New!
Цитата · Личное сообщение · #3

А ты AX очистил? Если выполнишь те мои две инструкции у тебя будет именно 120000h

Hellspawn пишет:
ну а с ольгой или без ольги, хз чё там в 64 намутили, в 32 ведь всё норм


Этот код работает под:

Windows 2000 32Bit
Windows 2003 32Bit
Windows XP Pro SP3 32Bit
Windows Vista 32Bit
Windows Seven 32Bit

Но вот начал тестить на 64 битке, именно на хп, там падать начало.
Так что думаю в чем проблема...

ps у меня стаб один, так что там всегда под всеми 32 битными окнами выходит 120000h


Ранг: 990.3 (! ! !)
Статус: Модератор
Author of DiE

Создано: 14 октября 2009 19:03 · Поправил: Модератор New!
Цитата · Личное сообщение · #4

в твоём ехе там 120000h, я говорил в принципе там любой адрес может быть
зачем тебе вообще недокументированные структуры то?


Ранг: 67.4 (постоянный)
Статус: Участник

Создано: 14 октября 2009 19:05 New!
Цитата · Личное сообщение · #5

Почему любой? Ну в принципе да вообще то, но как показывают тесты, под всеми 32 битными окнами мой код работает нормально. А вот что интересно в 64 битке в оле и без оли разные результаты.


Ранг: 2006.0 (!!!!)
Статус: Модератор
retired

Создано: 14 октября 2009 19:56 New!
Цитата · Личное сообщение · #6

Это ты написал кривой код, который работает под 2-3 осями, то от этого твой код автоматически не станет правильным и документированным. Поэтому не стоит удивляться, когда он сдохнет под 4-й ОС.


Ранг: 67.4 (постоянный)
Статус: Участник

Создано: 14 октября 2009 19:58 · Поправил: Sunzer New!
Цитата · Личное сообщение · #7

Вопрос, почему под олей 120000h а без нее другое значение?

в Windows XP 64bit под в VirtualBox


Ранг: 2006.0 (!!!!)
Статус: Модератор
retired

Создано: 14 октября 2009 21:30 New!
Цитата · Личное сообщение · #8

Если я правильно помню, fs:[8] указывает на стек, не то база, не то лимит. Так вот система может выделять стек там, где ей хочется. И кто делает на этом антидебаг-вешать на фонарях.
А почему так происходят-подебагай загрузчик, погляди.

Ранг: 310.8 (мудрец)
Статус: Участник

Создано: 15 октября 2009 10:40 New!
Цитата · Личное сообщение · #9

www.rsdn.ru/forum/winapi/144556.flat.aspx
Code:
  1.         mov eax, fs:[8]
  2.         mov StackLimit, eax

В 64-битных ОС и адреса и лимиты содержат 64 бита. Олли вообще 32-битная и как она себя ведет - х.з.


Ранг: 2006.0 (!!!!)
Статус: Модератор
retired

Создано: 15 октября 2009 17:53 New!
Цитата · Личное сообщение · #10

Не путай х64 ОС и режим WOW в ней. В этом режиме всё 32-битное для совместимости. Так что дело не в этом.
 eXeL@B —› Основной форум —› Windows XP 64Bit

Видеокурс ВЗЛОМ