Halaman

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.

Tidak ada komentar:

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