GNU Debugger ile Reverse Engineering

Mapzilla

Adanmış Üye
23 Eyl 2016
7,205
13
Heckert_GNU_left_white.svg


Arch

Kod:
sudo pacman -S gdb

Debian

Kod:
sudo apt-get install gdb

Fedora

Kod:
sudo yum install gdb

Windows

Kod:
https://www.gnu.org/software/gdb/download/

İlk önce bazı komutlardan bahsedelim.

break İstediğiniz lineyı breakpoint etmenizi sağlar. Function veya variable.

run Debugda yaptığınız değişikler ile çalıştırmanızı sağlar.

step veya next Sonraki source linea gider.

print İstediğiniz variableyi ekrana bastırır.

continue Çalıştırmaya devam eder.

Bunları kısaltmak için baş harflerini yazabilirsiniz.

Şimdi gelelim artık debug yapmaya.
C dili ile örnek bi' program hazırlıyalım. İsmi main olsun.


Kod:
#include <stdio.h>
#include <string.h>

int main(vo*id)
{
	char pass[] = "temp";
	scanf("%s",pass);

	if(strcmp("AAAA-0123",pass)==0) {
		printf("Access Granted !");
	}
	else {
		printf("Try Again.");
	}

  return 0;
}

Bunu şu şekilde compile ediyoruz.

Kod:
gcc -g main.c

gdb a.out

break main diyerek main functionunu
break ediyoruz. Bunu break main.c:5 diyerek de yapabiliriz. Gördüğümüz gibi böyle bi' çıktı verdi.


Kod:
Breakpoint 1, main () at main.c:5
5	{

Sürekli next dersek bir sonraki linea gider.

Kod:
Breakpoint 1, main () at main.c:5
5	{
(gdb) next
6		char pass[] = "temponevariable";
(gdb) next
7		scanf("%s",pass);
(gdb) next
sda
9		if(strcmp("AAAA-0123",pass)==0) {
(gdb) next
13			printf("Try Again.");
(gdb) next
16	  return 0;

Ayrıca next dediğimizde o komut gerçekleşmiş olur. scanf linenına geldiğimizde bizden input istedi. Eğer variableleri ve argc/argv'leri değiştirmek istiyorsak şöyle yapabiliriz.

Kod:
set variable pass = "hello"

Kod:
set args 10 20

Eğer bastırmak istiyorsak print pass ile bastırırız.
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.