Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Копирование самого себя в C:

25K
10 апреля 2009 года
A&D
38 / / 05.03.2009
Вот посмотрите что в этом исходнике
не правильно???
Код:
include 'win32ax.inc'

.data
nBufferLength dd 255
lpBuffer db '255',0
buffer dd 255
lpNewFileName db 'C:\33.exe',0

.code
start:
push lpBuffer
push nBufferLength
call [GetCurrentDirectory]

mov eax,buffer
push 0
push buffer
push lpNewFileName
call [CopyFile]


push 0
call [ExitProcess]

.end start

принцип его такой скопировать самого себя в C:\
Но что то не выходит??!
Поясните в чем ошибка!!

P.S.
Не ругайте я только начинающий кодер.
Синтаксис (FASM)
1
10 апреля 2009 года
kot_
7.3K / / 20.01.2000
Во первых - в вындоус есть такая функция GetLastError - если вам не очевидна ошибка, которую вы допустили - она вам поможет. Во вторых - подпись должна соотвествовать содержанию. Максимум от имени кого вы можете говорить - это пользователь. Да и то не факт. Остальное вам пока не дано. Третье - измените название темы.
261
11 апреля 2009 года
ahilles
1.5K / / 03.11.2005
[QUOTE=A&D;281459]
Но что то не выходит??!
Поясните в чем ошибка!!
[/QUOTE]

во-первых, перепутаны все параметры при вызове функций.
во-вторых, чего ты хотел добиться от функции GetCurrentDirectory ? она возвращает путь к текущей директории, а не к твоему exe файлу
попробуй так

 
Код:
start:
 call [GetCommandLineA]

 stdcall [CopyFile], eax, lpNewFileName, 0

 push 0
 call [ExitProcess]
25K
11 апреля 2009 года
A&D
38 / / 05.03.2009
ahilles,ты этот код проверял??
Что то у меня он не пашет!!
261
12 апреля 2009 года
ahilles
1.5K / / 03.11.2005
[QUOTE=A&D;281528]ahilles,ты этот код проверял??
Что то у меня он не пашет!![/QUOTE]
нет. не проверял. я думал, что ты хоть немного своей головой будешь думать...

вот, всё работает.
Код:
format PE GUI 4.0
entry start

include 'win32a.inc'

section '.code' code readable writeable executable

lpNewFileName db 'C:\prog.exe',0

start:
  call [GetCommandLineA]
  inc eax

  mov ebx, eax
  stdcall [lstrlenA],eax
  dec eax
  add eax, ebx
  mov byte [eax],0

  mov eax, ebx

  stdcall [CopyFile], eax, lpNewFileName, 0

  push 0
  call [ExitProcess]


section '.relocs' data readable writeable fixups

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'

  import kernel,\
         ExitProcess,'ExitProcess',\
         GetCommandLineA,'GetCommandLineA',\
         CopyFile,'CopyFileA',\
         lstrlenA,'lstrlenA'
25K
12 апреля 2009 года
A&D
38 / / 05.03.2009
Цитата: ahilles
Я думал, что ты хоть немного своей головой будешь думать...



Я то думал и вот нашёл другой способ

Код:
format PE GUI 4.0

include 'win32a.inc'


        invoke  GetModuleHandle,0
        invoke  GetModuleFileName,eax,buf,MAX_PATH


        invoke  CopyFile,buf,lpNewFileName,FALSE
        test    eax,eax
        jnz     exit



  exit:
        invoke  ExitProcess,0

data import

  library kernel32,'KERNEL32.DLL',\
          user32,'USER32.DLL'

  include 'api\kernel32.inc'
  include 'api\user32.inc'

end data

  lpNewFileName         db 'c:\My_File.exe',0
  buf                   rb MAX_PATH
25K
12 апреля 2009 года
A&D
38 / / 05.03.2009
Цитата: ahilles

Код:
format PE GUI 4.0
entry start

include 'win32a.inc'

section '.code' code readable writeable executable

lpNewFileName db 'C:\prog.exe',0

start:
  call [GetCommandLineA]
  inc eax

  mov ebx, eax
  stdcall [lstrlenA],eax
  dec eax
  add eax, ebx
  mov byte [eax],0

  mov eax, ebx

  stdcall [CopyFile], eax, lpNewFileName, 0

  push 0
  call [ExitProcess]


section '.relocs' data readable writeable fixups

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'

  import kernel,\
         ExitProcess,'ExitProcess',\
         GetCommandLineA,'GetCommandLineA',\
         CopyFile,'CopyFileA',\
         lstrlenA,'lstrlenA'



section '.relocs' data readable writeable fixups
Поясни пожалуйста для чего нужна эта строка??

7
12 апреля 2009 года
@pixo $oft
3.4K / / 20.09.2006
Перевожу по словам:
секция перемещаемых элементов,содержит читаемые/записываемые данные,а также таблицу перемещений
Надо изучать структуру PE-файла и свойства секций,тогда вопросы сами собой пропадут:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог