Halaman

Minggu, 20 September 2020

TUTORIAL 1 : BELAJAR ASSEMBLY UNTUK ANDROID ARM

Ass. Wr. Wb.

Pada kesempatan ini kita akan belajar membuat code assembly untuk android ARM. Disini akan dipraktekkan bagaimana cara membuat aplikasi android tanpa gradle atau tanpa build system. Jadi kita akan membuat aplikasi android tanpa Android Studio. Mengapa kita perlu untuk belajar membuat aplikasi android tanpa Android studio dan gradle, ya karena koneksi internet di indonesia belum merata dan masih mahal. Jadi kita perlu cara untuk mendevelop aplikasi android secara offline. Peralatan yang diperlukan adalah  Android NDK r21 dari situs https://android-developers.googleblog.com cukup download sekali, sudah bisa dipakai di banyak komputer secara offline. System yang saya pakai adalah windows 64bit, jadi download NDKnya ya untuk windows64bit juga. 




Untuk teman-teman bisa sesuaikan dengan system yang dipakai, apakah linux atau mac. Adapun device yang digunakan untuk demo programnya adalah android ice cream sandwich atau ICS, bukan emulator. Alasannya adalah untuk memastikan apakah aplikasi benar-benar akan berjalan di android device smartphone. Perlu diperhatikan bahwa bahasa assembly ini harus dijalankan pada emulator yang bisa mengemulasi processor ARM. Bluestack, NOX, PrimeOS, PhoenixOS semuanya x86_64 tidak bisa ARM. Pada kesempatan lain kita akan menggunakan QEMU, karena qemu ini bisa mengemulasi perangkat keras seperti processor arm 32bit, arm 64bit, x86_64 dan lain-lain. Untuk mengetahui lebih dalam silahkan merujuk ke www.qemu.org.


; Code program sebaiknya diberi keterangan lengkap agar mudah di fahami

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Nama Program : Halo Dunia Robot
; Nama file : halo.s
; Dibuat oleh : Gunawan Jinnu
; Tanggal pembuatan : 20 September 2020
; Tanggal update : 20 September 2020
; Deskripsi
- Menampilkan pesan Halo Dunia Robot

; Compiler : NDK r21 x86_64 https://android-developers.googleblog.com
; Compile dengan cara :
; arm-linux-androideabi/bin/as -o halo.o halo.s
; Link dengan cara :
;
arm-linux-androideabi/bin/ld -o halo halo.o
;Link source code : https://re-pinrang.blogspot.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

.data
    pesan: .ascii "Halo Dunia Robot.\n"
    len_pesan = . - pesan

.bss

.text
.globl _start
_start:
mov %r0, $1 // file descriptor 1 (stdout)
ldr %r1, =pesan
mov %r2, $len_pesan
mov %r7, $4 // syscall 4 (syswrite)
swi $0                  //linux kernel syscall
mov %r0, $0         // exit status return 0
mov %r7, $1 // syscall 1 (exit)
swi $0                  //linux kernel syscall


Kalau kita perhatikan, kode assembly ini sama saja dengan assembly di linux. Mulai dari file descriptor yang digunakan 1 sebagai standard output di linux. Kemudian syscall 4 syswrite linux. Syscall 1 untuk exit. Yang agak beda adalah swi $0, kalau di linux itu intrupsi 0x80h, tapi artinya sama saja linux kernel syscall.

Cara compile :
Extrack NDK r21 yang sudah di download, cari lokasi folder android-ndk-r21b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\arm-linux-androideabi\bin

as -o halo.o halo.s

menghasilkan file objek halo.o

link dengan cara:

ld -o halo halo.o

Cara running di android :
1. Hubungkan dengan kabel usb, buka cmd, ketik : adb push halo /sdcard/
2. Ketik : adb shell
3. mkdir /data/user/temp
4. mv /sdcard/halo /data/user/temp/
5. cd /data/user/temp
6. ./halo

Setelah itu harusnya muncul pesan Halo Dunia Robot.

Ok. Semoga bermanfaat. Terimakasih.

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.

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