Сейчас на форуме: tyns777, zds, JustLife (+4 невидимых)

 eXeL@B —› Программирование —› Господа, помогите выпрямить руки
Посл.ответ Сообщение

Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 06 марта 2010 12:44
· Личное сообщение · #1

Intro
Есть прога. Для полноценной работы требует файл лицензии. Проверку этого файла я обошел, но сечас возникла необходимость наличия этого фаила на диске. Т.е. прога вызывает GetFileAttributesW и если ответ неправильный (файл отсутствует)
Суть
Подменяю вызов GetFileAttributesW на свой кусок кода, там проверяю когда будет проверка файла лицензии и пытаюсь создать его И не могу создать
Code:
  1. 00EA659A  68 00000000       PUSH 0
  2. 00EA659F  68 80000000       PUSH 80
  3. 00EA65A4  68 03000000       PUSH 3
  4. 00EA65A9  68 00000000       PUSH 0
  5. 00EA65AE  68 01000000       PUSH 1
  6. 00EA65B3  68 00000040       PUSH 40000000                           
  7. 00EA65B8  50                PUSH EAX                      ; в EAX указатель на UNICODE строку c путем файла
  8. 00EA65B9  E8 724156FF       CALL <JMP.&kernel32.CreateFileW>

CreateFileW возвращает -1, естественно файло не создается. Ставлю после вызова CreateFileW GetLastError она возвращает- 2
Интересно то, что при определенных условиях сама программа там же создает этот лиц. файл. Вызов CreateFileW происходит один в один с моим, но у нее(проги) получается, а уменя нет. Где грабли?
P.S. Папка где нужно создать файл - Мои документы\ля-ля, работаю под админом




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

Создано: 06 марта 2010 12:54
· Личное сообщение · #2

А стек случаем не кривой? Кратен DWORD ?

У меня из за того что я не заметил что стек не выровненый, не работала апи 1, тоже долго голову ломал



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 06 марта 2010 13:03 · Поправил: Hexxx
· Личное сообщение · #3

Ты открываешь файл на запись, но с параметром OPEN_EXISTING (push 3), и чего ты хочешь?
Надо CREATE_ALWAYS т.е. push 2

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 06 марта 2010 13:20
· Личное сообщение · #4

Hexxx пишет:
Надо CREATE_ALWAYS т.е. push 2

ООО, Hexxx спасибо, это все женщины виноваты, много поздравляли
Тему закрываю


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