follow

Hacking Software

Pada umumnya sebuah software normal tipe 32-bit terbagi menjadi beberapa bagian, bagian yang umum adalah resource, bagian dimana icon gambar dan yang lainnya disimpan, kemudian data, bagian dimana variabel yang terinisialisasi disimpan dan kode, dimana program utama dijalankan.
Program Com mempunyai bagian yang paling sederhana dari semua jenis executable atau file yang bisa dilaksanakan/jalankan. Data yang terinisialisasi oleh Com exe dengan yang tidak, akan dianggap sama. Umumnya untuk menghemat ukuran, software selalu tidak menyertakan seksi stack pada badan program, tetapi memberikannya setelah program dijalankan.
Software yang saya niatkan untuk dibuat akan mempunyai tata letak atau bagian seperti ini. 1024 byte pertama yang biasanya di isi oleh header pada Win32, akan saya jadikan sebuah perintah untuk melakukan penginisialisasian program secara automatis.
Bisa anda lihat source kode-nya dibawah ini:

; Berkas/file COM di isi di alamat CS:0100h
; (Nilai CS diset oleh Operating system)
ORG 100h

; Fungsi CSPMode di gunakan sebagai header
; Bisa pula dijadikan Kernel 32-Bit

jmp start

CSPmode:
smsw_cx db 0fh,01,0e1h ;SMSW cx byte
mov ax,cx ;At Pmode this will be mov eax,ecx
and al,1
cmp al,1
jz trs
inc cx
lmsw_cx db 0fh,01,0f1h ;lmsw cx byte
trs:
ret

; Program di mulai di sini
start:
call CSPMode
cmp al,0
jz brs
mov ah,9
mov dx,offset tes
int 21h
brs:
; Tambahkan kode anda disini
ret

Tes db 'Prosessor already at Pmode!$'

Bila anda kebetulan mempunyai sebuah komputer kosong yang tidak mempunyai OS, dengan menuliskan program tersebut di sektor 1, head 0 dan track 0, dan setting BIOS diganti menjadi boot from A. Maka BIOS akan langsung menjalankan program dan menganggap program tersebut sebagai Operating System. Sekali lagi saya ingatkan, hacking bukan cracking (seperti menjebol sebuah system dan sejenisnya).
Program diatas saya tulis dengan menggunakan Emu8086 v.2.7. Terlihat diatas adanya sebuah variable dengan nama SMSW_AX dan LMSW_AX. Variabel tersebut memang sengaja saya buat, karena emu8086 yang saya pakai belum mendukung instruksi priviledge.

Saya jelaskan satu-persatu:

Org 100.
Org singkatan dari Origin, perintah ini tidak mempunyai opcode atau hexcode. Perintah ini hanya akan menyuruh assembler atau kompiler untuk menyimpan program kita di alamat tertentu.

Jmp Start.
Perintah ini akan melakukan lompatan ke CS+imm.

SMSW_CX.
Ini adalah variabel yang mengandung opcode priviledge instruction untuk mengambil mode prosesor.

Mov ax,cx.
Memindahkan nilai cx yang mengandung nilai Status mesin ke AX.

and al,1
Membatasi nilai al dengan satu, karena status mode terletak di Bit Nol.

cmp al,1
Membandingkan apakah nilai al adalah satu.

jz trs
Jika ya loncat ke Label Trs.

inc cx
Naikkan nilai CX sebanyak 1 saja.

lmsw_cx db 0fh,01,0f1h
Menyimpan nilai ke Register CR0, atau set Status Mesin.

trs:
ret
Label dengan nama trs. Menyuruh prosesor untuk kembali ke pemanggil.

start:
call CSPMode
Melakukan Pemanggilan ke CSPMode.

cmp al,0
Membandingkan AL apakah Nol.

jz brs
Jika ya beres.

mov ah,9
mov dx,offset tes
int 21h
Interupt Software, Tidak akan berjalan tanpa DOS. Fungsi asli sedang dibuat.




brs:
ret
Tes db ‘Prosesor sudah berada di P-Mode!$'
Untuk kembali dan variabel tulisan yang ditampilkan dengan int 21h fungsi 9h.


Catatan:
Silahkan anda lihat OpCode-nya dibawah ini:

0100: EB 10  Jmp 0x112
0102: 0F 01 E1  SMSW CX
0105: 8B C1  Mov AX,CX
0107: 24 01  And al,1
0109: 3C 01  Cmp al,1
010b: 74 04  JZ 0x111
010d: 41  Inc CX
010E: 0F 01 F1  LMSW CX
0111: C3  Ret
0112: EB ED FF  Call 0x102
0115: 3C 00  Cmp al,0
0117: 74 07  Jz 0x120
0119: B4 09  Mov al,9
011B: BA 21 01  Mov DX,offs [0x121]
011E: CD 21  Int x21
0120: C3  Ret
............................
............................
............................

Perintah pemanggilan fungsi ke 0x102, tidak ditulis EB 02 01, tetapi EB ED FF yang berarti –20 atau -0x14. Juga JZ. Maka baik perintah jump ataupun Call sama dengan CS+imm. Jika CS bernilai 101, dengan menuliskan 74 05 misalkan. Kita akan melompat ke alamat 106.

Artikel Terkait

By Djenggot with 0 comments

0 comments:

Leave a Reply