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

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

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

Создано: 03 марта 2015 23:43 · Поправил: samtehnik
· Личное сообщение · #1

Доброго времени.
Не могу разрешить элементарную проблему с копированием через CopyFile.
Дело в том что в отладчике все работает,а без него не пашет.Пробовал копировать через маппинг,но почему то опять в OllyDbg все гуд,а в обычном запуске нет.
Выдрал кусочек файла, посмотрите кому не сложно.Сравните под отладчиком и без.Файл сам себя копирует в "C:\p1232.exe" (по крайней мере должен).

Добавлено спустя 2 минуты
забыл прикрепить

a583_03.03.2015_EXELAB.rU.tgz - primer1.exe



Ранг: 58.1 (постоянный), 42thx
Активность: 0.060.01
Статус: Участник

Создано: 04 марта 2015 00:02
· Личное сообщение · #2

Может прав не хватает?



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

Создано: 04 марта 2015 00:25 · Поправил: samtehnik
· Личное сообщение · #3

От имени администратора стоит галка.Права на запись изменение ,везде галки.В безопасном режиме тоже не пошло.
Прав должно хватать.
Я так понял у вас работает?!



Ранг: 58.1 (постоянный), 42thx
Активность: 0.060.01
Статус: Участник

Создано: 04 марта 2015 00:54 · Поправил: hlmadip
· Личное сообщение · #4

У меня ситуация такая же как у тебя, прочитай, может поможет
http://www.wasm.ru/forum/viewtopic.php?id=45011

| Сообщение посчитали полезным: samtehnik

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

Создано: 04 марта 2015 01:38
· Личное сообщение · #5

Ну знал же что проблема элементарная).
цитирую :
Все очень просто и CopyFile тут не причем. Дело в GetCommandLine, так как из названия функции уже понятно, что она предназначена для получения командной строки, а не полного имени файла. При запуске в отладчике у вас нет пробела который разделяет имя файла и передаваемые аргументы в командной строке, а при обычном запуске он есть.Решение в том что надо использовать GetModuleFileName().

Спасибо большое дружище! А то еще чуть-чуть и у меня бы точно крыша поехала




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 04 марта 2015 01:54
· Личное сообщение · #6

тут сразу два бага.
во-первых, если в пути к модулю и его имени нет пробелов, первым символом будет буква диска, а не кавычка.
во-вторых, винда независимо от наличия аргументов добавляет в конец командной строки пробел.

если не понятно, вот два лога API Logger'а:
Code:
  1. GetCommandLineA() ret: 001424B0 -> "C:\primer1.exe "
  2. CopyFileA(001424B1: ":\primer1.exe", 00403000: "C:\p1232.exe", 00000000) ret: 00000000
  3.  
  4. GetCommandLineA() ret: 001424D8 -> ""C:\New Folder\primer1.exe" "
  5. CopyFileA(001424D9: "C:\New Folder\primer1.exe"", 00403000: "C:\p1232.exe", 00000000) ret: 00000000


в первом случае съедается буква диска, во втором - парсер дохнет на неэкранированной и незакрытой кавычке



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

Создано: 04 марта 2015 02:44
· Личное сообщение · #7

Буду знать ,спасибо


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