• XSS.stack #1 – первый литературный журнал от юзеров форума

Ассемблер Для Начинающих

Скажите мне сколько примерно у меня уйдет на изучение асма до среднего уровня и сколько понадобится чтобы я смог написать рандомный самомодифицирующийся полиморфный движок? :) (При условии что средненько знаю дельфи и что есть большой интерес)
 
Вопрос к тем кто писал кейлогеры .В длл библиотеке моего кейлогера устанавливается хук (WH_KEYBOARD) вызывающий фильтрующую функцию при нажатии на клавиши но вот в чем проблема при нажатии в функцию-фильтр передается Code, wParam ,lParam сведения о нажатой клавише передаются в wParam и lParam я обрабатываю wParam так
Код:
invoke MapVirtualKey,wParam,2
mov Key,eax
Key я пишу в файл но вот в чем проблемы:
1.код нажатой клавиши пишется 2 раза
2.Не различается раскладка клавиатуры
3.Не различается регистр
Первая проблема решается легко -отсеивать WM_KEYDOWN
Читал о использовании API функции ToAscii
 
Nex^or

Во-первых не факт, что ты вообще сможешь его написать, увы не всем это дано, это очень тяжёлый труд и если ты действительно хочешь создать серьёзный двиг, то среднего уровня тебе нехватит и знаний одного асма тоже, надо просидеть не один месяц в отладчике, иметь очень приличный опыт в реверсинге, ну и плюс ко всему прочему, если ты собрался писать этот двиг на ассемблере, к тому всё с нуля и САМ, то с сегодняшнего момента, при усиленном изучении языка и сторонних тем, до написания серьёзного и качественного движка пройдёт года два...


0h0tn1k
Я кейлогеры не писал, но постараюсь ответить на твои вопросы:
2.Не различается раскладка клавиатуры

Попробуй GetKeyboardLayout получить раскладку, а дальше уже в зависимости от раскладки раскодировать коды в символы


3.Не различается регистр

Может попробовать сделать при обработке событий WM_KEYDOWN и WM_KEYUP дополнительный флаг, который бы устанавливался и снимался в случае нажатия и отжатия клавиш Shift соответственно, потом в процедуре раскодирования добавить проверку на наличие этого флага.

Можешь попробовать GetKeyboardState, функция получает текущее состояние клавиатуры, кстати с помощью этой функции можно проверить нажаты ли SHIFT и CAPSLOCK
 
Ребяты, есть прога, которая должна с помощью регистров графического контроллера производить горизонтальное панорамирование. Тока прога чего-то глючит, помогите разобраться. Вот прога:
Код:
start:
	mov	ax,0003h
	int	10h
	mov	dx,03C0h
	mov	dl,13h
	mov	dh,001b
	push	cx
	mov	cx,30
main_prog:
	mov	al,dl
	out	dx,al
	mov	al,dh
	out	dx,al
	add	dh,11b
	loop	main_prog
	pop	cx
	ret
string	db	"Hello World!",'$'
	end	start
Извините, что опять дос, просто писать под винду возможности нет.
 
Вообщем запускаешь прогу, чёрный экран. Если запускать в винде, то можно нажать alt+tab, когда возвращаешься к проге, экран восстанавливается, а панаромирования ни какого неполучается.
 
У меня тут машинный код :) мне кажется это все же сюда надо :)

Вот собственно старый добрый дебагер что мы выдает :) классный код :) мне очень понравился :) решил с вами поделиться :) пример как код сам себя исправляет или генит...

адреса естественно левые :)

Код:
7000:0000 2E               CS
7000:0001 31 06 05 00  XOR [0005], AX
7000:0005 EB F9           JMP 0000
7000:0007 2E               CS
7000:0008 31 06 05 00  XOR [0005], AX
7000:000C 90               NOP
7000:000D 90               NOP
Для справки, в AX число 697B
 
Короче, есть прога:
Код:
.data

Message_Text	db	"Please enter command:",0Dh,0Ah
Message_Text3	db	0Dh,0Ah,"-->",0
Cons_Title	db	"System crack consol v1.0",0Dh,0Ah
BUF  DB 100 DUP(?)
logo   db  "Hello world!",0
LENS  DD ?
RES  DD ?
h1  DD ?
h2  DD ?

.code

start:
	invoke	GetStdHandle,STD_OUTPUT_HANDLE
	mov h1,eax
	invoke	GetStdHandle,STD_INPUT_HANDLE
	mov h2,eax
	invoke  WriteConsole,h1,addr Message_Text,22,addr LENS,addr RES
	invoke  WriteConsole,h1,addr Message_Text3,5,addr LENS,addr RES
	invoke  ReadConsole,h2,addr BUF,100,addr LENS,addr RES

	invoke  ExitProcess,NULL
end start
Как мне сравнить строку которую я ввёл с другой строкой(logo)?Обычной командой CMP?
 
Блин ну чё никто не знает?
Мне что как в досе,каждый символ одной строки сравнивать с каждым символом другой?
Или есть другой способ?
 
Спасибо aquri!
Вот ещё вопрос...
Кто нибудь знает как сделать dll на масм32?
К примеру, если можно, то показать исходник вывода сообщения(MessageBox) при вызове dll.
А так же пораметры компиляции, если не трудно...
 
Вот нашёл у себя пример dll

Код:
.386

.MODEL flat,stdcall

OPTION CASEMAP:NONE

Include windows.inc
Include user32.inc
Include kernel32.inc

IncludeLib user32.lib
IncludeLib kernel32.lib

.DATA

AppName  	db "DLL Skeleton",0
HelloMsg  db "Hello, you're calling a function in this DLL",0
LoadMsg  	db "The DLL is loaded",0
UnloadMsg  db "The DLL is unloaded",0
ThreadCreated	db "A thread is created in this process",0
ThreadDestroyed	db "A thread is destroyed in this process",0

.code
DllEntry proc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
	.if reason==DLL_PROCESS_ATTACH
  invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
	.elseif reason==DLL_PROCESS_DETACH
  invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
	.elseif reason==DLL_THREAD_ATTACH
  invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
	.else       ; DLL_THREAD_DETACH
  invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
	.endif
	mov  eax,TRUE
	ret
DllEntry Endp
; See skeleton.def: This is an exported function
TestHello proc
	invoke MessageBox,NULL,addr HelloMsg,addr AppName,MB_OK
	ret	
TestHello endp

End DllEntry
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх