Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

06.09.2009, 01:58
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
на си тоже можно 4кб писать, достаточно в опциях компилятора выбрать использование RTL в DLL ключиком /MD
|
|
|

06.09.2009, 03:17
|
|
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме: 5544
Репутация:
0
|
|
А МОЖНО ПДРОБНЕЕ Что это будет и как
|
|
|

06.09.2009, 10:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Вообще можно на Си писать сверхмаленькие приложения. порой даже меньше асма. Там оптимизатор офегительный. Но для этого нужно отказаться от всех либ. Тока на 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 (?)
|
|
|

06.09.2009, 11:28
|
|
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме: 5544
Репутация:
0
|
|
Сообщение от slesh
Вообще можно на Си писать сверхмаленькие приложения. порой даже меньше асма. Там оптимизатор .......
в чем компилить это? си++? 
|
|
|

06.09.2009, 11:47
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Тот код который я дал - это FASM
|
|
|

06.09.2009, 13:05
|
|
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме: 5544
Репутация:
0
|
|
Код:
Buffer byte ?;
GetWindowsDirectory(Buffer, Sizeof(Buffer));
fname byte "%Buffer%\system32\drivers\etc\hosts",0
синтаксис ошибка....
|
|
|

06.09.2009, 13:23
|
|
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме: 193434
Репутация:
79
|
|
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 GetWindowsDirectory, addr Buffer, MAX_PATH
invoke wsprintf, addr buffer2, addr param, addr Buffer, addr fname
|
|
|

06.09.2009, 14:37
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
а нахрена получать папку винды если можно получить адрес папки system32 тем самым с экономив чуть )
А также зачем юзать напряжкую функцию wsprintf?
достаточно просто сделать lstrcat
Последний раз редактировалось slesh; 06.09.2009 в 14:42..
|
|
|

06.09.2009, 17:46
|
|
Новичок
Регистрация: 04.09.2009
Сообщений: 6
Провел на форуме: 5544
Репутация:
0
|
|
если честно чуть не понял, мне нужно просто директорию в переменную получить
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(Buffer, 256);
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 fname, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
mov fhandle, eax
invoke SetFilePointer, addr fhandle,0,0,FILE_END
invoke WriteFile, fhandle, addr digs,BSIZE, ADDR cWritten, NULL
invoke WriteFile, fhandle, addr digs2,BSIZE, ADDR cWritten, NULL
invoke CloseHandle, fhandle
invoke ExitProcess, 0
end START
на масме.... ошибка тут Buffer byte ?;
GetWindowsDirectory(Buffer, 256); , как подправить?_)
|
|
|

06.09.2009, 22:09
|
|
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме: 193434
Репутация:
79
|
|
омфг!
ясно же было написано что и куда вставлять.
Кароче вот подправленный исходник:
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",0
param db "%s%s", 0
digs db "127.0.0.1 localhost",0,13,10
digs2 db "gdfsgsdfgdsg localhost",0
;--------------------------------------------------------------------------------------------------
.CODE
START:
invoke GetWindowsDirectory, addr Buffer, MAX_PATH
invoke wsprintf, addr buffer2, addr param, addr Buffer, addr fname
invoke CreateFile , addr buffer2, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
mov fhandle, eax
invoke SetFilePointer, addr fhandle,0,0,FILE_END
invoke WriteFile, fhandle, addr digs,BSIZE, ADDR cWritten, NULL
invoke WriteFile, fhandle, addr digs2,BSIZE, ADDR cWritten, NULL
invoke CloseHandle, fhandle
invoke ExitProcess, 0
end START
Для оптимизации, как сказал Слеш можно использовать GetSystemDirectory (вместо GetWindowDirectory) и lstrcat (вместо wsprintf)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|