PDA

View Full Version : เขียน ASM เรียก API แบบยากๆ [TASM]



neoclassic
03-11-2009, 01:50 PM
เป็นการเรียกใช้งาน API แบบไม่ต้องอาศัย lib เลยต่อตรงเข้า kernel32,user32,shell32,urlmon อื่นๆ
เทคนิคนี้ จะยากมากๆ และซับซ้อน มากๆ แต่นิยมในการสร้าง โปรแกรมเล็กๆ เร็วๆ อย่าง virus เนี่ยแหละนิยมใช้
สามารถนำไปดัดแปลง ได้อีกมากมาย และอีกอย่างเท่ห์ดีด้วย เขียนแบบที่ชาวบ้านเค้าไม่ค่อยทำกัน แต่เวลาแก้จะลำบากและเหนื่อยหน่อย


เริ่มกับ TASM แบบง่ายๆ ที่เรียกใช้งาน API ที่นิยมเขียนทั่วๆ ไป สังเกตุว่าต้องใช้ .lib ด้วย




;MessageBox.asm

.386
.model flat

extrn ExitProcess:proc
extrn MessageBoxA:proc
extrn Sleep:proc

.data
szMessage db "Message",0
szTitle db "Title",0

.code

main:

;-----แสดง MessageBox
push 0
push offset szTitle
push offset szMessage
push 0
call MessageBoxA

;-----หน่วงไว้ 5 วินาที
push 5000
call Sleep

;-----แสดง MessageBox
push 0
push offset szTitle
push offset szMessage
push 0
call MessageBoxA

;
push 0
call ExitProcess

end main

ตัว complie ให้ copy ใส่ notepad และ save เป็นชื่ออะไรก็ได้ .bat หรือ .cmd

tasm32 /m3 /ml messagebox,,;
tlink32 /Tpe /aa messagebox,messagebox,,import32.lib
pause



และลองใช้ NASM ที่เรียกใช้งาน API ที่นิยมเขียนทั่วๆ ไป ก็ไม่ได้ยากก็ต้องใช้ .lib อยู่ดี



;MessageBox.asm
CPU 386
[BITS 32]

%macro API 2
%xdefine %1 _%1@%2
extern %1
%endmacro

%macro API 3
%xdefine %1 _%3@%2
extern %1
%endmacro


API Sleep, 4
API ExitProcess, 4
API MessageBoxA, 16

section .bss
section .rdata
section .data
section .text

szTitle db 'Title',0
szMessage db 'Message',0


GLOBAL _entry


_entry:
;-----แสดง MessageBox
push 0
push szTitle
push szMessage
push 0
call MessageBoxA

;-----หน่วงไว้ 5 วินาที
push 5000
call Sleep

;-----แสดง MessageBox
push 0
push szTitle
push szMessage
push 0
call MessageBoxA

push 0
call ExitProcess

ret
end


ตัว compile
c:\nasm\nasm -O6 -fwin32 messagebox.asm
c:\masm32\bin\link /RELEASE /entry:entry /subsystem:windows messagebox.obj c:\masm32\lib\kernel32.lib c:\masm32\lib\user32.lib /OUT:messagebox.exe
pause


ต่อไปมาดูของยากมั่ง รับรอง มึนแน่นอน เป็น TASM จะไม่ใช้ .lib ใดๆ เลย พร้อมกับต.ย downloader

**Hidden Content: Check the thread to see hidden data.**