Devilzc0de Forum Follow @devilzc0de
  • Home
  • Hacking
  • Networking
  • Programming
  • O.S
  • Server
  • Tweets
  • Search
  • Member List
  • Calendar
Current time: 05-23-2013, 08:08 AM Hello There, Guest! (Login — Register)
Devilzc0de Forum › Information Technology › Programming › Assembly v
1 2 3 Next »

Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg

Home General Computer Multimedia Business Lounge

Post Reply 
Tweet
Threaded Mode | Linear Mode
Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
04-29-2011, 02:15 AM
Post: #1
mywisdom Offline
Administrator
*******
Administrators
Posts: 921
Joined: Dec 2009
Reputation: 44
Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
tool: masm32 (32 bit microsoft macro assembler) -> untuk membuat executable

debugger: OllyDbg 1.10 (http://www.ollydbg.de/odbg110.zip) -> untuk mendebug

made by : devilzc0de.org written by m0nk3y@devilzc0de.org

thanks: all devilzc0de crews and members

download: http://www.masm32.com/masmdl.htm

"mengakses register lebih cepat dari mengakses memori karena register berada di cpu sedangkan memori baru terhubung

ke cpu dengan bus"

microsoft macro assembler yang kita kenal dulu hanya untuk pemrograman asm 16 bit kini telah berevolusi menjadi

masm32 untuk pemrograman assembly 33 bit

* direktif

aturan yg akan dipakai di program

---------------

.model -> aturan untuk model memori

----------------

.model flat-> menggunakan register 32 bit, offset 32 bit , semua data dan kode dalam 32 bit segment

.model tiny -> untuk program dg ekstensi .com, pake segmen tunggal utk kode dan data

.model large -> menggunakan lebih dr 1 segmen

dll

untuk mempermudah jalankan qteditor di direktori instalasi masm32

* program ke 1 menggunakan stdout

------------------------------------------

.386

.model flat,stdcall

option casemap : none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\masm32.inc

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\kernel32.lib

.data

devilzc0de db "devilzc0de",0

.code

start:

invoke StdOut, addr devilzc0de

call ExitProcess

end start

------------------------------------------

untuk langsung mengkompile menjadi exe :

[Image: 1.jpg]

penjelasan:

.386 (8036)-> direktif untuk menggunakan instruksi asm untuk arsitektur 32 bit , bisa juga .686 atau .586 , dll

untuk listingnya bisa dilihat di http://en.wikipedia.org/wiki/X86_instruction_listings

stdcall -> digunakan untuk parameter passing untuk fungsi dari kiri ke kanan (akan kita lihat saat mendebug program

kita nanti)

option casemap : none -> dengan direktif ini akan membuat semua label, variabel menjadi case sensitif (jika ada

kesalahan penulisan seharusnya huruf besar menjadi huruf kecil bisa mengakibatkan error)

selanjutnya digunakan include file 2 yang diperlukan (.inc) untuk api2 windows yang akan kita gunakan

.data

tempat data 2 yang akan kita inisialisasi misal kita define variabel dg nama: devilzc0de

devilzc0de db "devilzc0de",0

db= define byte , 0 digunakan untuk terminate string dg null

.code

merupakan awal kode asm kita

selanjutnya kita menggunakan invoke untuk memanggil makro stdout yang bertujuan untuk print screen:

--------------------------------

invoke StdOut, addr devilzc0de

--------------------------------

jika kita tulis lagi instruksi tersebut di asm 16 bit bisa menggunakan interup 21 hexa fungsi 9 hex:

------------

mov ah, 09h ; kita akan menggunakan int 21h fungsi 9 hexa

mov dx, offset devilzc0de ; dx berisi offset devilzc0de

int 21 h ; call dos

--------------

di atas terlihat kebiasaan di 16 bit yg menggunakan offset, perbedaan offset dan addr:

- offset : untuk mendapatkan alamat memori dari variabel global

- addr : untuk mendapatkan alamat memori dari variabel global dan lokal

selanjutnya call makro exitprocess (untuk keluar program)

program di atas bisa ditulis ulang dg cara yg lebih bagus dg mengganti call dengan invoke:

* program ke 1 menggunakan stdout

------------------------------------------

.386

.model flat,stdcall

option casemap : none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\masm32.inc

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\kernel32.lib

.data

devilzc0de db "devilzc0de",0

.code

start:

invoke StdOut, addr devilzc0de

invoke ExitProcess,0

end start

------------------------------------------

dg call program kita tidak akan melakukan push dword ke stack, pas program error tidak akan ada catch untuk error,

jadi invoke digunakan menggantikan call bisa dianggap error handling.

* messagebox

bagi yg sudah familiar dg program2 seperti vb dan delphi pasti sudah tau yg namanya messagebox

misal di vb6 untuk menampilkan messagebox saat form diload:

-----------------

Private Sub Form_Load()

MsgBox "tes"

End Sub

-----------------

untuk implementasi menampilkan messagebox seperti di visual basi di asm dg menggunakan masm32 :

----------------------------

.386

.model flat,stdcall

option casemap : none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\masm32.inc

include \masm32\include\user32.inc

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\kernel32.lib

includelib \masm32\lib\user32.lib

.data

judul db "title pesan",0

devilzc0de db "devilzc0de",0

.code

start:

invoke MessageBox, NULL, addr devilzc0de, addr judul, MB_OK

invoke ExitProcess,0

end start

----------------------------

assemble dan link lalu run:

[Image: 2.jpg]

[2.jpg]

keterangan:

untuk menggunakan messagebox kita perlu menginclude : user32.inc

dan user32.lib

-----------------------

include \masm32\include\user32.inc

includelib \masm32\lib\user32.lib

--------------------------

mari kita lihat isi file user32.inc:

-----------------------------

C:\Documents and Settings\batman>cd \

C:\>cd masm32\include

C:\masm32\include>type user32.inc

; ===========================================

; user32.inc copyright MASM32 1998 - 2005

; ===========================================

-------snip snip cutted-----------

MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD

MessageBox equ <MessageBoxA>

------snip snip cutted-----------

ok jika kita perhatikan di caption muncul pesan error, karena seharusnya tidak kita isi parameter dengan null tapi

kita masukkan data berupa DWORD (double word) di windows 16 bit 1 word=16 bit , untuk 32 bit dikenal dword yg

artinya 16x2 (yang dimaksud 1 bit adalah 1 bit angka biner , 32 bit merupakan gabungan 2 register 16 bit).

ok mari kita coba melakukan sedikit debug dengan olydbg untuk melihat kinerja program:
[Image: 3.jpg]
[3.jpg]

invoke MessageBox, NULL, addr devilzc0de, addr judul, MB_OK

karena di bagian paling atas kita menulis direktif stdcall maka yg dipush pertama kali adalah parameter paling

kanan:

00401000 >/$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL

parameter paling kanan dipush ke stack

00401002 |. 68 00304000 PUSH devil.00403000 ; |Title = "title pesan"

setelah itu alamat memori dari variabel judul

00401007 |. 68 0C304000 PUSH devil.0040300C ; |Text = "devilzc0de"

setelah itu berlanjut ke alamat memori dari variabel devilzc0de

0040100C |. 6A 00 PUSH 0 ; |hOwner = NULL

untuk howner kita push 0 karena isian parameter adalah null

0040100E |. E8 0D000000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA

setelah itu dilakukan jmp ke makro messageboxA

dengan isi makro sbb:

-------snip snip cutted-----------

MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD

MessageBox equ <MessageBoxA>

------snip snip cutted-----------

equ berarti equal dengan kata lain MessageBox merupakan alias dari MessageBoxA

00401013 |. 6A 00 PUSH 0 ; /ExitCode = 0

selanjutnya kita push 0 ke stack untuk exit code 0

00401015 \. E8 00000000 CALL <JMP.&kernel32.ExitProcess> ; \ExitProcess

selanjutnya dilakukan jmp ke makro exitprocess

ok kita lanjutkan lain waktu dengan teknik anti disasm dan anti heuristic dengan junk
Find all posts by this user
Quote this message in a reply
04-29-2011, 07:13 AM
Post: #2
newbie.ganteng Offline
./Devilz 1st Cadet
Posts: 20
Joined: Apr 2011
Reputation: 0
RE: Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
Ctrl + D dulu ya om hmm
Puyeng nie ngambek
Find all posts by this user
Quote this message in a reply
01-31-2012, 08:44 PM
Post: #3
dare Offline
./Devilz 1st Cadet
Posts: 1
Joined: Dec 2011
Reputation: 0
RE: Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
kak boleh minta materi lengkap nya yg versi pdf gk,, heheh.....
Find all posts by this user
Quote this message in a reply
08-15-2012, 07:58 PM
Post: #4
axlez Offline
./Devilz 1st Cadet
Posts: 1
Joined: Aug 2012
Reputation: 0
RE: Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
makasih banget gan... nambah dikit lge nih ilmu ane... lumayan meringankan ane beljar assembly jga.. belajar belajar belajar belajar belajar
Find all posts by this user
Quote this message in a reply
10-06-2012, 12:12 AM
Post: #5
1st_N3iCs Offline
./Devilz Officer
Posts: 147
Joined: Jan 2012
Reputation: 3
RE: Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
pusing ane.... ngerti cuma seperempatnya...
ngakak ane butuh belajar lagi
Visit this user's website Find all posts by this user
Quote this message in a reply
11-19-2012, 09:24 PM
Post: #6
nanda Away
Wahyu Adi Prasetyo
**
Moderators
Posts: 2,017
Joined: Aug 2011
Reputation: 119
RE: Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
belajar mantap om
cuman rada pusing
Find all posts by this user
Quote this message in a reply
01-24-2013, 08:21 PM
Post: #7
Jehuda Offline
./Devilz 1st Cadet
Posts: 39
Joined: Jan 2013
Reputation: 2
RE: Pemrograman Assembly di Windows dengan masm32+ debugging dg ollydbg
huuuuwww... pusing, satu-satunya post yg bagus untuk basic.. mantap
kalo ada lagi yg paling basic buat belajar RE, kasih lagi dong kk.. malu
Find all posts by this user
Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Topic Tools
Topic Link :
BBCode :
HTML Code :
View a Printable Version Send Thread to a Friend Subscribe to this thread
Submit Google Submit Face book Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq

Possibly Related Threads...
Thread: Author Replies: Views: Last Post
  Assembly 32 bit and shellc0d3 mywisdom 2 1,957 02-11-2013 08:56 PM
Last Post: ghosthands
  The Art Of Assembly ian182 8 1,585 02-08-2013 10:49 PM
Last Post: ghosthands
  Just another guy asking how to learn assembly ? mandi 3 259 02-08-2013 10:47 PM
Last Post: ghosthands
  method/fungsi pada assembly syn_attack 4 487 05-19-2012 12:35 AM
Last Post: zard22
  pemrograman di ms dos dengan assembly 16 bit+ analisa beberapa virus asm mywisdom 8 1,768 01-21-2012 04:04 AM
Last Post: oootrxooo
Tongue [Tutor] Iseng with Assembly nyiurmelambai 12 1,125 01-17-2012 05:30 PM
Last Post: darkdante
  intruksi assembly kiddies 6 1,654 01-12-2012 11:20 PM
Last Post: filmar
  How to Translate your perl script into c and assembly ev1lut10n 5 884 10-24-2011 08:15 PM
Last Post: syn_attack
  [ASK] beda register ah dengan al (register 8-bit) syn_attack 4 950 10-19-2011 07:58 AM
Last Post: syn_attack
  Debugging ELF dengan GDB mywisdom 3 1,280 08-22-2011 12:47 AM
Last Post: kebijaksanaanku

Users Browsing
1 Guest(s)

  • Contact Us
  • devilzc0de
  • Return to Top
  • Mobile Version
  • RSS Syndication
  • Help
Current time: 05-23-2013, 08:08 AM Powered By MyBB, © 2002-2013 MyBB Group. Theme created by Justin S. | Mixed By Chaer.Newbie | Fixed By Aditya

USING THIS SITE INDICATES THAT YOU HAVE READ AND ACCEPT OUR TERMS. IF YOU DO NOT ACCEPT THESE TERMS, YOU ARE NOT AUTHORIZED TO USE THIS SITE