ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #591  
Старый 06.09.2009, 01:58
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

на си тоже можно 4кб писать, достаточно в опциях компилятора выбрать использование RTL в DLL ключиком /MD
 
Ответить с цитированием

  #592  
Старый 06.09.2009, 03:17
Аватар для ИНЖЕНЕР_13
ИНЖЕНЕР_13
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме:
5544

Репутация: 0
Отправить сообщение для ИНЖЕНЕР_13 с помощью ICQ
По умолчанию

А МОЖНО ПДРОБНЕЕ Что это будет и как
 
Ответить с цитированием

  #593  
Старый 06.09.2009, 10:16
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Вообще можно на Си писать сверхмаленькие приложения. порой даже меньше асма. Там оптимизатор офегительный. Но для этого нужно отказаться от всех либ. Тока на WinAPI писать. Также компилить с оптимизацие, без отладочной инфы, и мерджить секции. Также и на фамсе правильно секции нужно располагать.
ВОт пример - находит адрес hosts и дописывает туда запись. Размер килобайт. Хотя внутри можно еще дописать пару команд потому как много свободного места есть
Код:
format PE GUI 4.0
entry Start

include 'include\win32ax.inc'
include 'include\encoding\win1251.inc'

section '.code' code readable executable import writeable
library kernel32,'KERNEL32.DLL'
include 'include\apia\kernel32.inc'

Start:
 invoke GetSystemDirectory, buf, 256
 invoke lstrcat, buf, filename
 invoke CreateFile, buf, GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0
 cmp eax, 0FFFFFFFFh
 je Exit
 mov [hFile], eax
 invoke SetFilePointer, eax, 0, 0, FILE_END
 invoke WriteFile, [hFile], hostip, hostip_stop - hostip, ReadBytes, 0
 invoke CloseHandle, [hFile]
 Exit:
 invoke ExitProcess, 0

 hostip db 13,10,"192.168.2.1 myLan",13,10
 hostip_stop:
 filename db "\drivers\etc\hosts"

 hFile dd ?
 ReadBytes dd ?
 buf db 256 dup (?)
 
Ответить с цитированием

  #594  
Старый 06.09.2009, 11:28
Аватар для ИНЖЕНЕР_13
ИНЖЕНЕР_13
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме:
5544

Репутация: 0
Отправить сообщение для ИНЖЕНЕР_13 с помощью ICQ
Question

Цитата:
Сообщение от slesh  
Вообще можно на Си писать сверхмаленькие приложения. порой даже меньше асма. Там оптимизатор .......
в чем компилить это? си++?
 
Ответить с цитированием

  #595  
Старый 06.09.2009, 11:47
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Тот код который я дал - это FASM
 
Ответить с цитированием

  #596  
Старый 06.09.2009, 13:05
Аватар для ИНЖЕНЕР_13
ИНЖЕНЕР_13
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме:
5544

Репутация: 0
Отправить сообщение для ИНЖЕНЕР_13 с помощью ICQ
По умолчанию

Код:
 Buffer byte ?;
GetWindowsDirectory(Buffer, Sizeof(Buffer));
fname byte "%Buffer%\system32\drivers\etc\hosts",0
синтаксис ошибка....
 
Ответить с цитированием

  #597  
Старый 06.09.2009, 13:23
Аватар для Hiro Protagonist
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме:
193434

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

PHP код:
...
.
data?
Buffer db MAX_PATH dup(?)
buffer2 db MAX_PATH dup(?)
...
.
data
fname db 
"\system32\drivers\etc\hosts",0
param db 
"%s%s"0
...
.
code
...
invoke GetWindowsDirectoryaddr BufferMAX_PATH
invoke wsprintf
addr buffer2addr paramaddr Bufferaddr fname 
 
Ответить с цитированием

  #598  
Старый 06.09.2009, 14:37
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

а нахрена получать папку винды если можно получить адрес папки system32 тем самым с экономив чуть )

А также зачем юзать напряжкую функцию wsprintf?
достаточно просто сделать lstrcat

Последний раз редактировалось slesh; 06.09.2009 в 14:42..
 
Ответить с цитированием

  #599  
Старый 06.09.2009, 17:46
Аватар для ИНЖЕНЕР_13
ИНЖЕНЕР_13
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме:
5544

Репутация: 0
Отправить сообщение для ИНЖЕНЕР_13 с помощью ICQ
По умолчанию

если честно чуть не понял, мне нужно просто директорию в переменную получить
PHP код:
           .386
        
.model flat,stdcall
  option   casemap
:none
                        
include C:\masm32\INCLUDE\WINDOWS.INC
                        
include C:\masm32\INCLUDE\KERNEL32.INC 
                        
include C:\masm32\INCLUDE\USER32.INC
                        includelib c
:\masm32\lib\user32.lib
                        includelib c
:\masm32\lib\kernel32.lib
;###########################################################
NOFDIG equ 30
DSIZE equ 30
BSIZE equ NOFDIG
*DSIZE

;###########################################################
;----------------------------------------------------------------------------------------------
.
data 

Buffer byte 
?;
GetWindowsDirectory(Buffer256);
fname byte "%Buffer%\system32\drivers\etc\hosts",0
fhandle dword 
?
cWritten dword ?
digs byte  "127.0.0.1  localhost",0,13,10
digs2 byte  
"gdfsgsdfgdsg  localhost",0
;--------------------------------------------------------------------------------------------------
.
CODE  
START
:
invoke CreateFile addr fnameGENERIC_WRITE0NULLOPEN_ALWAYSFILE_ATTRIBUTE_NORMAL0
mov fhandle
eax
invoke SetFilePointer
addr fhandle,0,0,FILE_END
invoke WriteFile
fhandleaddr digs,BSIZEADDR cWrittenNULL
invoke WriteFile
fhandleaddr digs2,BSIZEADDR cWrittenNULL
invoke CloseHandle
fhandle

invoke ExitProcess
0



end START 
на масме.... ошибка тут Buffer byte ?;
GetWindowsDirectory(Buffer, 256); , как подправить?_)
 
Ответить с цитированием

  #600  
Старый 06.09.2009, 22:09
Аватар для Hiro Protagonist
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме:
193434

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

омфг!

ясно же было написано что и куда вставлять.

Кароче вот подправленный исходник:

PHP код:
 .386 
        
.model flat,stdcall 
  option   casemap
:none 
                        
include C:\masm32\INCLUDE\WINDOWS.INC 
                        
include C:\masm32\INCLUDE\KERNEL32.INC  
                        
include C:\masm32\INCLUDE\USER32.INC 
                        includelib c
:\masm32\lib\user32.lib 
                        includelib c
:\masm32\lib\kernel32.lib 
;#################################################  ########## 
NOFDIG equ 30 
DSIZE equ 30 
BSIZE equ NOFDIG
*DSIZE 

;#################################################  ########## 
;---------------------------------------------------------------------------------------------- 
.
data

Buffer db MAX_PATH dup(?) 
buffer2 db MAX_PATH dup(?) 
fhandle dd 
cWritten dd 


.
data

fname db 
"\system32\drivers\etc\hosts",
param db 
"%s%s"0
digs db  
"127.0.0.1  localhost",0,13,10 
digs2 db  
"gdfsgsdfgdsg  localhost",
;-------------------------------------------------------------------------------------------------- 
.
CODE   
START
:

invoke GetWindowsDirectoryaddr BufferMAX_PATH 
invoke wsprintf
addr buffer2addr paramaddr Bufferaddr fname 

invoke CreateFile 
addr buffer2GENERIC_WRITE0NULLOPEN_ALWAYSFILE_ATTRIBUTE_NORMAL
mov fhandle
eax 
invoke SetFilePointer
addr fhandle,0,0,FILE_END 
invoke WriteFile
fhandleaddr digs,BSIZEADDR cWrittenNULL 
invoke WriteFile
fhandleaddr digs2,BSIZEADDR cWrittenNULL 
invoke CloseHandle
fhandle 

invoke ExitProcess




end START 
Для оптимизации, как сказал Слеш можно использовать GetSystemDirectory (вместо GetWindowDirectory) и lstrcat (вместо wsprintf)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Delphi, .NET, Asm 92 14.05.2010 17:59
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
ОС с нуля z01b С/С++, C#, Delphi, .NET, Asm 36 03.07.2008 15:30
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Взлом Unix а silveran *nix 4 21.12.2005 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ