Admin
Jumlah posting : 74 Reputation : 3 Join date : 28.11.09 Age : 43 Lokasi : —¤÷('KuToardjoE')÷¤—
| Subyek: Hacking Software Sat Nov 28, 2009 12:38 pm | |
| Sekedar Share Buat yang Blom tahu adjah - Spoiler:
Pada dasarnya sebuah software tipe 32-bit dibagi menjadi beberapa bagian, bagian yang umum adalah resource, bagian dimana icon gambar dan yang lainnya disimpan, lalu data, bagian dimana variabel yang terinisialisasi disimpan, dan yang terakhir 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 dengan, akan dianggap sama. Umumnya untuk menghemat ukuran, software tidak selalu menyertakan seksi stack pada badan program, tetapi memberikannya setelah program itu dijalankan. Software yang akan dibuat mempunyai tata letak atau bagian seperti ini. 1024 byte pertama yang biasanya di isi oleh header pada Win32, untuk menjadikan sebuah perintah dalam melakukan penginisialisasian program secara automatis. 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 mempunyai sebuah komputer kosong yang tidak ada 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. gw ingetin disini hanya hacking dan bukan cracking (seperti menjebol sebuah system dan sejenisnya). Program ditulis dengan menggunakan Emu8086 v.2.7. Terlihat diatas adanya sebuah variable dengan nama SMSW_AX dan LMSW_AX. Variabel tersebut memang sengaja dibuat, karena emu8086 yang dipakai belum mendukung instruksi priviledge.
Penjelasannya 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:
0
100: 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 perintah jump ataupun Call sama dengan CS+imm. Jika CS bernilai 101, dengan menuliskan 74 05 misalkan. Kita akan melompat ke alamat 106. Juga baik Call ataupun Jmp, menggunakan nilai Signed. Misalkan nilai 254 pada unsigned akan menjadi –2. Nah sekarang tinggal mencobanya az deh ....
| |
|
Serdadu
Jumlah posting : 12 Reputation : 0 Join date : 28.11.09 Age : 38
| |