เป็นการเรียกใช้งาน API แบบไม่ต้องอาศัย lib เลยต่อตรงเข้า kernel32,user32,shell32,urlmon อื่นๆ
เทคนิคนี้ จะยากมากๆ และซับซ้อน มากๆ แต่นิยมในการสร้าง โปรแกรมเล็กๆ เร็วๆ อย่าง virus เนี่ยแหละนิยมใช้
สามารถนำไปดัดแปลง ได้อีกมากมาย และอีกอย่างเท่ห์ดีด้วย เขียนแบบที่ชาวบ้านเค้าไม่ค่อยทำกัน แต่เวลาแก้จะลำบากและเหนื่อยหน่อย
เริ่มกับ TASM แบบง่ายๆ ที่เรียกใช้งาน API ที่นิยมเขียนทั่วๆ ไป สังเกตุว่าต้องใช้ .lib ด้วย
;MessageBox.asm
.386
.model flat
extrn ExitProcess

roc
extrn MessageBoxA

roc
extrn Sleep

roc
.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: To see this hidden content your post count must be 1 or greater.**