Halaman

Tampilkan postingan dengan label WINDOWS 32BIT ASSEMBLY. Tampilkan semua postingan
Tampilkan postingan dengan label WINDOWS 32BIT ASSEMBLY. Tampilkan semua postingan

Rabu, 16 September 2020

TUTORIAL 5 : DASAR CRACKING REVERSE ENGINEERING PENGALAMATAN MEMORI STRUKTUR PERCABANGAN LOOP DAN FUNGSI

    Dalam melakukan reverse engineering, sangat penting untuk memahami pengalamatan memori, struktur percabangan, loop dan fungsi. Ini merupakan core of the core, intinya inti dari pada reverse engineering dan cracking. Jika anda memahami dengan baik code ini, maka anda sudah bisa mengikuti tutorial reverse engineering.

 ; Code program sebaiknya diberi keterangan lengkap agar mudah di fahami

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Nama Program : MemoriLoopDanFungsi
; Nama file : MemoriLoopFungsi.asm
; Dibuat oleh : Gunawan Jinnu
; Tanggal pembuatan : 16 September 2020
; Tanggal update : 16 September 2020
; Deskripsi
; - Menerima dan Menampilkan input di windows CMD
; Compile dengan cara :
; ml /c /coff /Zd MemoriLoopFungsi.asm
; Link dengan cara :
; link /subsystem:console /entry:start MemoriLoopFungsi.obj
;Link source code : https://re-pinrang.blogspot.com/2020/09/tutorial-5-pengalamatan-memori-loop-dan.html
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


.386
.MODEL Flat,STDCALL

option casemap:none 

include C:\masm32\include\windows.inc 
include C:\masm32\include\kernel32.inc 

includelib C:\masm32\lib\kernel32.lib 


STD_INPUT_HANDLE EQU -10
STD_OUTPUT_HANDLE EQU -11

.data
TanyaNama db "==============================================", 0, 0Dh, 0Ah,
"PROGRAM PRINT SELAMAT - REVERSING.ID ", 0, 0Dh, 0Ah,
"==============================================", 0, 0Dh, 0Ah
"Masukkan nama anda : ", 0, 0Dh, 0Ah
LenTanyaNama equ $-TanyaNama
Selamat db "Selamat "

.data?
consoleOutHandle dd ?
consoleInHandle dd ?

buffer db 32 dup(?)
ReadWritten dd ? 

UcapanSelamat db 50 dup(?)

.code

start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov consoleOutHandle, eax

push STD_INPUT_HANDLE
call GetStdHandle
mov consoleInHandle, eax

;Tampilkan pesan menanyakan nama
push 0
push offset ReadWritten
push LenTanyaNama
push offset TanyaNama
push consoleOutHandle
call WriteConsole

;Terima input nama
push 0
push offset ReadWritten
push sizeof buffer
push offset buffer
push consoleInHandle
call ReadConsole

xor ecx, ecx ; persiapkan ecx sebagai counter
SusunUcapan:
mov al, byte ptr[Selamat+ecx] ; Masukkan karakter pertama ke register al
mov byte ptr[UcapanSelamat+ecx], al ; Salin isi register al ke UcapanSelamat
inc ecx ; tambah counter/penghitung dengan 1
cmp ecx, 8 ; jika kedelapan karakter belum selesai disalin ke UcapanSelamat
jb SusunUcapan  ; loop SusunUcapan

xor ecx, ecx ; persiapkan ecx sebagai counter
MasukkanNama:
mov al, byte ptr[buffer+ecx] ; masukkan 1byte buffer ke register al
test eax, eax    ; periksa apakah semua karakter telah terbaca
je KatakanSelamat ; jika sudah semua, jump ke label/fungsi KatakanSelamat
mov byte ptr[UcapanSelamat+ecx+8], al ;salin input nama dari buffer ke UcapanSelamat
inc ecx ; tambah counter dengan 1
jmp MasukkanNama ; loop



KatakanSelamat:
;Tampilkan pesan halo nama
push 0
push offset ReadWritten
push sizeof UcapanSelamat
push offset UcapanSelamat
push consoleOutHandle
call WriteConsole

Keluar:
push 0
call ExitProcess

end start


Link Video :


Terimakasih. 

Selamat belajar.

TUTORIAL 4 : ECHO INPUT CRACK NAMA PROGRAM MASM32 X64DBG WINDOWS CONSOLE

    Ini merupakan pelajaran ReadConsole, terima input data sekaligus contoh latihan crack nama program.

 .386
.MODEL Flat,STDCALL

option casemap:none 

include C:\masm32\include\windows.inc 
include C:\masm32\include\kernel32.inc 

includelib C:\masm32\lib\kernel32.lib 


STD_INPUT_HANDLE EQU -10
STD_OUTPUT_HANDLE EQU -11

.data
NamaProgram  db "==============================================", 0, 0Dh, 0Ah,
"PROGRAM ECHO INPUT CONSOLE !!!! ", 0, 0Dh, 0Ah,
"==============================================", 0, 0Dh, 0Ah

LenNamaProgram equ $-NamaProgram

.data?
consoleOutHandle dd ?
consoleInHandle dd ?

buffer db 32 dup(?)
ReadWritten dd ? 

.code

start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov consoleOutHandle, eax

push STD_INPUT_HANDLE
call GetStdHandle
mov consoleInHandle, eax

;Tampilkan NamaProgram
push 0
push offset ReadWritten
push LenNamaProgram
push offset NamaProgram
push consoleOutHandle
call WriteConsole

;Terima input
push 0
push offset ReadWritten
push sizeof buffer
push offset buffer
push consoleInHandle
call ReadConsole

;Echo input
push 0
push offset ReadWritten
push sizeof buffer
push offset buffer
push consoleOutHandle
call WriteConsole

push 0
call ExitProcess

end start

Video Tutorial :


Terimakasih.

Selamat belajar.


TUTORIAL 3: BELAJAR WINDOWS MASM32 ASSEMBLY DAN X64DBG - INTEGER DAN CHAR STRING

 Source code :

Nama file: CharDanNomor


.386                                          ; set instruksi
.model flat, stdcall  ; model memori flat(untuk 32bit windows), calling convention stdcall
option casemap:none                 ; nama fungsi case sensitif
 
include c:\masm32\include\windows.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\kernel32.lib
 
STD_OUTPUT_HANDLE equ -11      ;standard output
 
;Seksi/ bagian 1 untuk data yang sudah di inisialisasi
.DATA
                        ;0   1    2     3    4   5     6   7    8    9   10   0
          isi_pesan db 30h, 20h, 31h, 20h, 32h, 20h, 33h, 20h, 34h, 20h, 35h, 20h, 36h, 20h, 37h, 20h, 38h, 20h, 39h, 20h, 31h, 30h ; null terminator string
          panjang_pesan equ $-isi_pesan ; 15 desimal
         
;Bagian 2 data yang belum diketahui
.DATA?
          consoleOutHandle dd ?
          bytesWritten dd ?
         
; Bagian 3 Code program
.CODE
start:
 
          ; saya akan menghindari penggunaan invoke dulu untuk sekarang
          ; karena ini merupakan dasar
         
          push STD_OUTPUT_HANDLE ; masukkan data ke stack, pada kasus ini, ini merupakan parameter fungsi
          call GetStdHandle  ; panggil fungsi, nilai return berada di eax
          mov [consoleOutHandle], eax    ; simpan nilai returnnya 
 
          ;Fungsi WriteConsole memerlukan 5 parameter, menurut MSDN
          push 0                   ; reserved (belum digunakan, hanya cadangan)
          push offset bytesWritten ; karakter yang berhasil ditulis
          push panjang_pesan         ; sesuai deskripsi, panjang karakter pesan
          push offset isi_pesan
          push consoleOutHandle    ; console handle
          call WriteConsole            ; nama fungsi yang dipanggil
         
          push 0                   ; return exit code
          call ExitProcess

          end start

 

File make,

Nama file: set appname=CharDanNomor


if exist %appname%.obj del %appname%.obj
if exist %appname%.exe del %appname%.exe
c:\masm32\bin\ml.exe /c /coff /Zd %appname%.asm
c:\masm32\bin\link.exe /subsystem:console /entry:start %appname%.obj
dir
cmd

pause


Link YouTube:






TUTORIAL 2 : BELAJAR WINDOWS ASSEMBLY DAN X64DBG

Bagian-bagian x64dbg :



Source code :

https://re-pinrang.blogspot.com/2020/09/bagian-1-dasar-bahasa-assembly.html

.386
.MODEL Flat,STDCALL

option casemap:none

include C:\masm32\include\windows.inc 
include C:\masm32\include\kernel32.inc 

includelib C:\masm32\lib\kernel32.lib 

STD_OUTPUT_HANDLE EQU -11

.DATA
isi_pesan  db "Halo Console 1", 0
panjang_pesan dd 15

.DATA?
consoleOutHandle dd ? 
bytesWritten dd ?

.code
start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov [consoleOutHandle],eax
push 0
push offset bytesWritten
push panjang_pesan
push offset isi_pesan
push consoleOutHandle
call WriteConsole
push 0
call ExitProcess
end start

Video tutorial :


Semoga bermanfaat.

Selasa, 01 September 2020

TUTORIAL 1 : DASAR BAHASA ASSEMBLY WINDOWS 32bit MASM32 CONSOLE UNTUK PEMULA

Alhamdulillahirabbilalamin, pada saat ini kita semua masih diberi kesempatan untuk terus belajar, kita niatkan mudah-mudahan apa yang kita lakukan bernilai ibadah. Pada kesempatan ini saya akan menjelaskan tentang bahasa pemrograman assembly. Target pembaca adalah pemula, jika sudah memiliki pengalaman dalam bahasa pemrograman lain maka itu akan sangat membantu dalam mengikuti tutorial ini.

 Adapun peralatan yang dibutuhkan kali ini yaitu: 

  1. System operasi : WindowsXp sampai Windows10 bisa
  2. Masm32
  3. Notepad++
Saya akan mulai dengan contoh kode program, kemudian membahas lebih dalam tentang bahasa assembly ini.

Berikut ini kode programnya :


.386

.MODEL Flat,STDCALL

option casemap:none

include C:\masm32\include\windows.inc 
include C:\masm32\include\kernel32.inc 

includelib C:\masm32\lib\kernel32.lib 

STD_OUTPUT_HANDLE EQU -11

.DATA
isi_pesan  db "Halo Console 1", 0
panjang_pesan dd 15

.DATA?
consoleOutHandle dd ? 
bytesWritten dd ?

.code
start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov [consoleOutHandle],eax
push 0
push offset bytesWritten
push panjang_pesan
push offset isi_pesan
push consoleOutHandle
call WriteConsole
push 0
call ExitProcess
end start


Oke, itu kode programnya. Sekarang mari persiapkan peralatan. 

1. System windows
2. Masm32
3. Notepad bisa juga notepad++

Cara compile :

C:\masm32\bin\ml.exe /c HaloConsole1.asm 

Cara link :

C:\masm32\bin\link.exe /subsystem:console /entry:start HaloConsole1.obj

Jika pada saat link muncul pesan error:

warning LNK4033: converting object format from OMF to COFF
LINK : error LNK2001: unresolved external symbol _start
error LNK2001: unresolved external symbol _GetStdHandle@4
error LNK2001: unresolved external symbol _WriteConsoleA@20
error LNK2001: unresolved external symbol _ExitProcessA@4
fatal error LNK1120: unresolved externals

itu berarti compiler masm32 yang anda gunakan mengompilasi file assembly menjadi file object menggunakan format OMF secara default. Format OMF adalah format standard dari intel Object Module Format. Sedangkan untuk windows, tim pengembang microsoft NT mendesain code yang tidak hanya bisa digunakan intel tapi juga vendor cpu yang lain. Tim pengembang microsoft NT memilih menggunakan COFF Common Object File Format yang kemudian menjadi standar untuk Pengembangan microsoft Win32 development tool.

Untuk mengatasi error tersebut compile dengan memasukkan option COFF secara langsung dengan cara :

C:\masm32\bin\ml.exe /c /coff HaloConsole1.asm 



Selengkapnya di video berikut :






Pembahasan lebih mendalam tentang assembly x86 disini https://re-pinrang.blogspot.com/2020/10/tutorial-singkat-dasar-assembly-x86.html

Sekian , terimakasih.




Dasar

TUTORIAL 1 : DASAR BAHASA ASSEMBLY WINDOWS 32bit MASM32 CONSOLE UNTUK PEMULA

Alhamdulillahirabbilalamin, pada saat ini kita semua masih diberi kesempatan untuk terus belajar, kita niatkan mudah-mudahan apa yang kita l...

Postingan Populer