Ubuntu Türkiye

Yazılım => Programlama => C/C++ => Konuyu başlatan: Reverser - 03 Kasım 2014 - 20:34:00

Başlık: Tersine Kod Mühendisliği
Gönderen: Reverser - 03 Kasım 2014 - 20:34:00
Arkadaşlar merhaba, bu konuyu benim gibi reverse code enginnering hakkında kendini geliştirmek isteyenler için açtım. Planım şu, C programlama bilen arkadaşlar bir program yazacaklar ve kaynak kodunu paylaşmadan sadece derlenmiş .exe formatlı binary dosyayı paylaşacaklar bizde bu executable dosyaları analiz edip, C kodu haline geri çevirip burada paylaşacağız programı yazan kişi de orijinal kodunu paylaşacak ve nasıl bir iş çıkardığımızı göreceğiz.

Şimdi C kodlama bilen birinden bir program yazıp burada paylaşmasını istiyorum umarım yardım etmek isteyen biri çıkar :)
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: siberoloji - 03 Kasım 2014 - 21:11:59
?
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 03 Kasım 2014 - 21:46:10
Alıntı yapılan: siberoloji - 03 Kasım 2014 - 21:11:59
?

Sorun nedir ?
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: 7hr33l3t73r - 03 Kasım 2014 - 23:00:25
En kisa surede bir program kodllari ekleyecegim.
Guzel bir fikir. :)
Ama basligi turkce olarak ayarlarsak daha iyi olur .
Tersine kod muhendisligi

Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 03 Kasım 2014 - 23:06:55
Alıntı yapılan: Z3r0nU11 - 03 Kasım 2014 - 23:00:25
En kisa surede bir program kodllari ekleyecegim.
Guzel bir fikir. :)
Ama basligi turkce olarak ayarlarsak daha iyi olur .
Tersine kod muhendisligi

Moderatörlerden rica edelim o zaman düzeltilsin :)
Hocam bekliyorum çok komplike olmasına gerek yok bu gece boşum eğlence olsun bana :)
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: 7hr33l3t73r - 03 Kasım 2014 - 23:15:58
Suan disardayim telden yaziyorum.Iletiyi gorunce cevap yazmak istedim.
Ama gecte olsa ekleme yapacagim.
Windows altinda degilde linux altinda derleme yapalim linux altinda calisalim. Boyle daha iyi olur bence.
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 03 Kasım 2014 - 23:16:44
Alıntı yapılan: Z3r0nU11 - 03 Kasım 2014 - 23:15:58
Suan disardayim telden yaziyorum.Iletiyi gorunce cevap yazmak istedim.
Ama gecte olsa ekleme yapacagim.

Tamamdır hocam beklemedeyim.
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: siberoloji - 03 Kasım 2014 - 23:55:03
@Reverser;
.exe dosyaları paylaşmak sıkıntılı olabilir diye geçmişti aklımdan ancak o an söyleyip söylememekte kararsız kaldığım için ? koydum sonra doldurmak için.
Bence de linux altında derlenmiş dosyalar daha uygun olur.
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 04 Kasım 2014 - 00:00:27
Alıntı yapılan: siberoloji - 03 Kasım 2014 - 23:55:03
@Reverser;
.exe dosyaları paylaşmak sıkıntılı olabilir diye geçmişti aklımdan ancak o an söyleyip söylememekte kararsız kaldığım için ? koydum sonra doldurmak için.
Bence de linux altında derlenmiş dosyalar daha uygun olur.

Sıkıntı olacağını sanmıyorum ama linux altında derlenmiş executable paylaşalım o halde. Bu arada hala birinin dosya paylaşmasını bekliyorum :D
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: mozhan - 04 Kasım 2014 - 00:04:52
ekleyeceğim şuan dropbox da oluşturuyorum arkadaşlar bekleyin biraz
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: siberoloji - 04 Kasım 2014 - 00:05:31
https://www.dropbox.com/s/zzr1m18o2mz2od0/reverse?dl=0 (https://www.dropbox.com/s/zzr1m18o2mz2od0/reverse?dl=0)
Basit bir program ama yine de paylaşayım...
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: mozhan - 04 Kasım 2014 - 00:08:26
https://www.dropbox.com/s/afbhs5ym337nekg/datastrctrs.tar.gz?dl=0 (https://www.dropbox.com/s/afbhs5ym337nekg/datastrctrs.tar.gz?dl=0)

Çalıştırılabilir dosya ve çalışması için gereken metin belgesi içinde.Hem metin belgesi biraz fikir ve ip ucu verir sana :D kodlar da bende :D
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 04 Kasım 2014 - 00:19:43
Alıntı yapılan: siberoloji - 04 Kasım 2014 - 00:05:31
https://www.dropbox.com/s/zzr1m18o2mz2od0/reverse?dl=0 (https://www.dropbox.com/s/zzr1m18o2mz2od0/reverse?dl=0)
Basit bir program ama yine de paylaşayım...

64 bitlik exe umarım doğrudur

/****************************

   Reversed source code
   - Reverser

****************************/


#include <stdio.h>
#include <stdlib.h>



int main(int argc, char *argv[])
{
    puts("Hello, World!");
    return 0;
}



@mr.ozhan inceliyorum hemen
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: siberoloji - 04 Kasım 2014 - 00:23:11
reverse kodları
#include <stdio.h>
int main()
{
printf("Hello, World! \n");
return 0;
}
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: mozhan - 04 Kasım 2014 - 00:25:49
diğerinin cevabını gördümde şimdi istersen başka bi dosya atayım çünkü içinde baya bi kod var ?
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 04 Kasım 2014 - 00:28:18
Alıntı yapılan: mr.ozhan - 04 Kasım 2014 - 00:25:49
diğerinin cevabını gördümde şimdi istersen başka bi dosya atayım çünkü içinde baya bi kod var ?

Diğer dosyayı da atın. Bu attığınız çok uğraştıracak çünkü :D Belki de reverse edemeyeceğim ...
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: mozhan - 04 Kasım 2014 - 00:43:39
https://www.dropbox.com/s/fx9glxrihhzbca4/asd?dl=0 (https://www.dropbox.com/s/fx9glxrihhzbca4/asd?dl=0)
https://www.dropbox.com/s/2oynrcjyfimp7g5/asdf?dl=0 (https://www.dropbox.com/s/2oynrcjyfimp7g5/asdf?dl=0)
iki tane kodu kısa mantığı güzel :D
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 04 Kasım 2014 - 01:07:33
Alıntı yapılan: mr.ozhan - 04 Kasım 2014 - 00:43:39
https://www.dropbox.com/s/fx9glxrihhzbca4/asd?dl=0 (https://www.dropbox.com/s/fx9glxrihhzbca4/asd?dl=0)
https://www.dropbox.com/s/2oynrcjyfimp7g5/asdf?dl=0 (https://www.dropbox.com/s/2oynrcjyfimp7g5/asdf?dl=0)
iki tane kodu kısa mantığı güzel :D

Hocam ilk verdiğinizi hallettim diğerine yarın bakacağım kod aşağıda

/****************************

   Reversed source code
   - Reverser

****************************/


#include <stdio.h>
#include <stdlib.h>

typedef struct koord_1 {
int x;
int y;
}koord_1;

typedef struct koord_2 {
int x;
int y;
}koord_2;

int main(int argc, char *argv[])
{
    float sonuc;
    koord_1 koord_1;
    koord_2 koord_2;
    printf("birinci noktanin kordinatlarini giriniz...");
scanf("%d",&koord_1.x);
scanf("%d",&koord_1.y);
printf("ikinci noktanin kordinatlarini giriniz...");
scanf("%d",&koord_2.x);
scanf("%d",&koord_2.y);

sonuc = sqrt(pow((koord_1.x-koord_2.x),2)+pow((koord_1.y-koord_2.y),2));

printf("girilen noktalar arasi uzaklik: %.2f\n",sonuc);
       
      return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: mozhan - 04 Kasım 2014 - 01:24:10
bu da orjinali :D
#include<stdio.h>
#include<math.h>
struct nokta
{
    int x;
    int y;
};
main()
{
    float mesafe;
    struct nokta a,b;
    printf("birinci noktanin kordinatlarıni giriniz:\n");
    scanf("%d%d",&a.x,&a.y);
    printf("ikinci noktanın kordinatlarıni giriniz:\n");
    scanf("%d%d",&b.x,&b.y);
    mesafe=sqrt(pow((a.x-b.x),2)+pow((a.y-b.y),2));
    printf("girilen noktalar arası uzaklık: %.2f\n",mesafe);// noktadan sonra sadece iki basamak göster
}
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: Reverser - 04 Kasım 2014 - 09:58:11
Alıntı yapılan: heartsmagic - 04 Kasım 2014 - 05:34:17
Alıntı yapılan: Reverser - 04 Kasım 2014 - 01:16:20
Şimdi farkettim ayrıca üslubunuzu beğenmedim.

Mimiklerin görünmediği ve karşı tarafın da kullanmadığı zamanlarda, şu sanal dünyada yazılan şeyleri azarlar mahiyette anlamak yerine "Kendi başlığını düzenlemede bir sıkıntı mı yaşıyorsun?" şeklinde anlamak en doğru yaklaşımdır zannımca.

Bu sekilde yazilabilirdi kanisindayim. Neyse hocam konuyu dagitmayalim. Mobildeyim suan aksam diger dosyalari inceleyecegim.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 04 Kasım 2014 - 17:09:54

Alıntı yapılan: mr.ozhan - 04 Kasım 2014 - 00:08:26
https://www.dropbox.com/s/afbhs5ym337nekg/datastrctrs.tar.gz?dl=0 (https://www.dropbox.com/s/afbhs5ym337nekg/datastrctrs.tar.gz?dl=0)

Çalıştırılabilir dosya ve çalışması için gereken metin belgesi içinde.Hem metin belgesi biraz fikir ve ip ucu verir sana :D kodlar da bende :D

Programın çalışma mantığını çözdüm kod haline dönüştürmedim ama özetle Pseudocode şeklinde açıklayayım.

program birden çok fonksiyondan oluşuyor (update, diz, main) ve bir de ogrenci struct'ı barındırıyor ad soyad ve numara şeklinde anladığım kadarıyla.


main fonksiyonda

"Please select an operation for sorting:"...

"1=> Ascending sort by student numbers"
"2=> Descending sort by student numbers"
"3=> Ascending sort by student names"
"4=> Descending sort by student names"
"5=> Ascending sort by student surnames"
"6=> Descending sort by student surnames"...
"7=> Update Student Data"
"0=> Exit\n"



daha sonra seçim için klavyeden girdi alınıyor,

>>>>> Your Choice:


örnek olarak , update fonksiyonunu inceleyelim

update(struct ogrenci /*??*/ *unk1)
{

" Give Student Number For Updating:"

   öğrenci numarası girilir,

   numara dosya icinde varsa devam edilir,

   "New Number: "
   " New Name:"
   "New Surname:"

    *** The Record has been updated!


   yoksa işlem sonlanır

" Error: Student does not exist  "

 
}



genel olarak program, main'de bulunan seçeneklere göre student.txt dosyası içindeki veriler üzerinden işlem yapmakta. sıralama, güncelleme vs. gibi
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: mozhan - 08 Kasım 2014 - 01:26:15
@Reverser Gönderdiğin kodlar doğru. Benim merak etiğim bu olayın işleyişi nasıldır acaba. Kodları sen mi tahmin ediyorsun yoksa bi programla mı ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 08 Kasım 2014 - 03:09:19

.file "loto.c"
.intel_syntax noprefix
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "L O T O\n"
.section .rodata.str1.4,"aMS",@progbits,1
.align 4
.LC1:
.string "Bu haftaki numaralari almak icin Enter'a basiniz:"
.section .rodata.str1.1
.LC2:
.string "Iste geliyor: "
.LC3:
.string "%d"
.LC4:
.string "\n\nIyi Sanslar!"
.section .text.unlikely,"ax",@progbits
.LCOLDB5:
.section .text.startup,"ax",@progbits
.LHOTB5:
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB21:
.cfi_startproc
lea ecx, [esp+4]
.cfi_def_cfa 1, 0
and esp, -16
push DWORD PTR [ecx-4]
push ebp
.cfi_escape 0x10,0x5,0x2,0x75,0
mov ebp, esp
push edi
push esi
push ebx
push ecx
.cfi_escape 0xf,0x3,0x75,0x70,0x6
.cfi_escape 0x10,0x7,0x2,0x75,0x7c
.cfi_escape 0x10,0x6,0x2,0x75,0x78
.cfi_escape 0x10,0x3,0x2,0x75,0x74
mov esi, 6
mov ebx, 1402438301
sub esp, 228
push OFFSET FLAT:.LC0
call puts
mov DWORD PTR [esp], 0
call time
mov DWORD PTR [esp], eax
call srand
lea edx, [ebp-220]
xor eax, eax
mov ecx, 49
mov edi, edx
rep stosd
mov DWORD PTR [esp], OFFSET FLAT:.LC1
call printf
pop edx
push DWORD PTR stdin
call _IO_getc
mov DWORD PTR [esp], OFFSET FLAT:.LC2
call puts
add esp, 16
.p2align 4,,10
.p2align 3
.L2:
call rand
mov ecx, eax
imul ebx
mov eax, ecx
sar eax, 31
sar edx, 4
sub edx, eax
imul edx, edx, 49
sub ecx, edx
mov eax, DWORD PTR [ebp-220+ecx*4]
mov edx, ecx
test eax, eax
jne .L2
sub esp, 8
add edx, 1
mov DWORD PTR [ebp-220+ecx*4], 1
push edx
push OFFSET FLAT:.LC3
call printf
add esp, 16
sub esi, 1
jne .L2
sub esp, 12
push OFFSET FLAT:.LC4
call puts
add esp, 16
lea esp, [ebp-16]
xor eax, eax
pop ecx
.cfi_restore 1
.cfi_def_cfa 1, 0
pop ebx
.cfi_restore 3
pop esi
.cfi_restore 6
pop edi
.cfi_restore 7
pop ebp
.cfi_restore 5
lea esp, [ecx-4]
.cfi_def_cfa 4, 4
ret
.cfi_endproc
.LFE21:
.size main, .-main
.section .text.unlikely
.LCOLDE5:
.section .text.startup
.LHOTE5:
.section .text.unlikely
.LCOLDB6:
.text
.LHOTB6:
.p2align 4,,15
.globl rnd
.type rnd, @function
rnd:
.LFB22:
.cfi_startproc
sub esp, 12
.cfi_def_cfa_offset 16
call rand
cdq
idiv DWORD PTR [esp+16]
add esp, 12
.cfi_def_cfa_offset 4
mov eax, edx
ret
.cfi_endproc
.LFE22:
.size rnd, .-rnd
.section .text.unlikely
.LCOLDE6:
.text
.LHOTE6:
.section .text.unlikely
.LCOLDB7:
.text
.LHOTB7:
.p2align 4,,15
.globl seedrnd
.type seedrnd, @function
seedrnd:
.LFB23:
.cfi_startproc
sub esp, 24
.cfi_def_cfa_offset 28
push 0
.cfi_def_cfa_offset 32
call time
mov DWORD PTR [esp], eax
call srand
add esp, 28
.cfi_def_cfa_offset 4
ret
.cfi_endproc
.LFE23:
.size seedrnd, .-seedrnd
.section .text.unlikely
.LCOLDE7:
.text
.LHOTE7:
.ident "GCC: (GNU) 4.9.2"
.section .note.GNU-stack,"",@progbits
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Amenofis - 11 Kasım 2014 - 10:24:00
Alıntı yapılan: mr.ozhan - 08 Kasım 2014 - 01:26:15
@Reverser Gönderdiğin kodlar doğru. Benim merak etiğim bu olayın işleyişi nasıldır acaba. Kodları sen mi tahmin ediyorsun yoksa bi programla mı ?

Decompiler denen bir program kullanılıyor. Bu programlar önce kodu disassembly eder sonra da asm kodundan "tahmini" bir C kodu üretir. Fakat arkadaş yeterince tecrübeli ise programı sadece disassembly eder, tahmini kaynak kodunu kendisi çözebilir.

Eğer programı debug modda derlediyseniz kaynak kodunuzdaki semboller dosyaya ekleneceğinden tersleme işlemi çok daha basit olur. Yok eğer -O3 gibi bir optimizasyon ile derlediyseniz derleyici kaynak kodla alakasız bir çıktı üretebilir. Bu durumda tersleme zor olur. Birde kodunuzu düzenli değil de spagetti kod diye tabir edilen düzensiz şekilde yazıyorsanız tersleyip algoritmanızı çalmak zorlaşır.

Bu işlemi önlemek için de çeşitli araçlar var ama hiçbiri tam çözüm değil tabiki. Mesela obfuscator denilen araçlarla binary dosyanızı karıştırabilirsiniz. Ya da upx ile sıkıştırabilirsiniz. Ama her halukarda bellekte programın orjinali görünecektir.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ekremsenturk - 11 Kasım 2014 - 11:49:52
@revers takma isimli arkadaşımız, sanırım internet'ten benzer bir örnek bulup, kopyalayıp yapıştırıyordu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: mozhan - 11 Kasım 2014 - 12:15:37
hmm anladım aslında güzel işmiş makina kodundan yararlanarak çözmek. Makina kodunun işleyişi ni öğremek içinde kullanılabilir o zaman :D ikinci dönem buna ihtiyacım olacak :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 15 Kasım 2014 - 11:28:49
Alıntı yapılan: Amenofis - 11 Kasım 2014 - 10:24:00
Alıntı yapılan: mr.ozhan - 08 Kasım 2014 - 01:26:15
@Reverser Gönderdiğin kodlar doğru. Benim merak etiğim bu olayın işleyişi nasıldır acaba. Kodları sen mi tahmin ediyorsun yoksa bi programla mı ?

Decompiler denen bir program kullanılıyor. Bu programlar önce kodu disassembly eder sonra da asm kodundan "tahmini" bir C kodu üretir. Fakat arkadaş yeterince tecrübeli ise programı sadece disassembly eder, tahmini kaynak kodunu kendisi çözebilir.

Eğer programı debug modda derlediyseniz kaynak kodunuzdaki semboller dosyaya ekleneceğinden tersleme işlemi çok daha basit olur. Yok eğer -O3 gibi bir optimizasyon ile derlediyseniz derleyici kaynak kodla alakasız bir çıktı üretebilir. Bu durumda tersleme zor olur. Birde kodunuzu düzenli değil de spagetti kod diye tabir edilen düzensiz şekilde yazıyorsanız tersleyip algoritmanızı çalmak zorlaşır.

Bu işlemi önlemek için de çeşitli araçlar var ama hiçbiri tam çözüm değil * tabi ki. Mesela obfuscator denilen araçlarla binary dosyanızı karıştırabilirsiniz. Ya da upx ile sıkıştırabilirsiniz. Ama her halukarda bellekte programın orjinali görünecektir.

Dediğiniz gibi farklı yöntemler mevcut özellikle offsetler üzerinden fonksiyonları bulmak oldukça uğraştırmakta. Basit bir disassembler kullanıyorum sadece decompiler kullanmıyorum. Bu işin zevki burada zaten.. Tek satır C kodu için bazen 10 satır asm okumak zorunda kalıyorsunuz.

Alıntı yapılan: ekremsenturk - 11 Kasım 2014 - 11:49:52
@revers takma isimli arkadaşımız, sanırım internet'ten benzer bir örnek bulup, kopyalayıp yapıştırıyordu.

Programın nasıl çalıştığını bilmeden nasıl kopyala yapıştır yapayım :) ? Bu iş için yeteri kadar ASM ve C bilgim var..
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: plazma - 16 Kasım 2014 - 17:47:30
O kısımı ben okuduğumda soru olarak anlıyorum bence bakış açısı bu sen öyle görmek istersen öyledir, uslübte terbiyesiz bir durum yok bence ama tercih meselesi siz öyle o an yorumlamış olabilirsiniz algı farklı olabilir tabikide...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: berkaye - 17 Kasım 2014 - 17:09:41
Merhaba , bu dropbox'ta paylaştığınız dosyaları indirdim bende yapmak için fakat dosya ayarlarında "allow executing .." kutusunu işaretlememe rağmen hiç bir tepki vermiyor açmaya çalıştığımda, anlayamadım neden böyle ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ekremsenturk - 17 Kasım 2014 - 17:20:17
Uçbirimden çalıştırmalısın. Dosyanın home dizininde olduğunu varsayarak, aşağıdaki örneği kullanabilirsin.
./çalıştırlacak_dosyanın_adı
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: berkaye - 17 Kasım 2014 - 17:24:46
Alıntı yapılan: ekremsenturk - 17 Kasım 2014 - 17:20:17
Uçbirimden çalıştırmalısın. Dosyanın home dizininde olduğunu varsayarak, aşağıdaki örneği kullanabilirsin.
./çalıştırlacak_dosyanın_adı

Teşekkür ederim bende uğraşıyorum açmak için, kullanıcı arayüzü var sandım :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 29 Aralık 2014 - 16:08:50
Zor bir asm kodu paylastim herhalde :)
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: ahmetvural32 - 29 Aralık 2014 - 16:22:21
Alıntı yapılan: heartsmagic - 04 Kasım 2014 - 05:34:17
Alıntı yapılan: Reverser - 04 Kasım 2014 - 01:16:20
Şimdi farkettim ayrıca üslubunuzu beğenmedim.

Mimiklerin görünmediği ve karşı tarafın da kullanmadığı zamanlarda, şu sanal dünyada yazılan şeyleri azarlar mahiyette anlamak yerine "Kendi başlığını düzenlemede bir sıkıntı mı yaşıyorsun?" şeklinde anlamak en doğru yaklaşımdır zannımca.
Bende kendi başlığımı düzeltemiyorum :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 29 Aralık 2014 - 16:41:58
Alıntı yapılan: Z3r0nU11 - 29 Aralık 2014 - 16:08:50
Zor bir asm kodu paylastim herhalde :)

Çok zor random sayı türettirmece :)
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: heartsmagic - 30 Aralık 2014 - 00:56:57
Alıntı yapılan: ahmetvural32 - 29 Aralık 2014 - 16:22:21
Alıntı yapılan: heartsmagic - 04 Kasım 2014 - 05:34:17
Alıntı yapılan: Reverser - 04 Kasım 2014 - 01:16:20
Şimdi farkettim ayrıca üslubunuzu beğenmedim.

Mimiklerin görünmediği ve karşı tarafın da kullanmadığı zamanlarda, şu sanal dünyada yazılan şeyleri azarlar mahiyette anlamak yerine "Kendi başlığını düzenlemede bir sıkıntı mı yaşıyorsun?" şeklinde anlamak en doğru yaklaşımdır zannımca.
Bende kendi başlığımı düzeltemiyorum :D

Hangi başlığı? Düzenleyememe nedenin nedir?
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: ahmetvural32 - 30 Aralık 2014 - 14:44:42
:d


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 30 Aralık 2014 - 14:47:26

Alıntı yapılan: heartsmagic - 30 Aralık 2014 - 00:56:57
Alıntı yapılan: ahmetvural32 - 29 Aralık 2014 - 16:22:21
Alıntı yapılan: heartsmagic - 04 Kasım 2014 - 05:34:17
Alıntı yapılan: Reverser - 04 Kasım 2014 - 01:16:20
Şimdi farkettim ayrıca üslubunuzu beğenmedim.

Mimiklerin görünmediği ve karşı tarafın da kullanmadığı zamanlarda, şu sanal dünyada yazılan şeyleri azarlar mahiyette anlamak yerine "Kendi başlığını düzenlemede bir sıkıntı mı yaşıyorsun?" şeklinde anlamak en doğru yaklaşımdır zannımca.
Bende kendi başlığımı düzeltemiyorum :D

Hangi başlığı? Düzenleyememe nedenin nedir?
Ubuntuda C yazamamak başlığını
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Aralık 2014 - 15:25:38
Konuyu canlandırmak amacıyla, ilerleyen saatlere doğru bir binary paylaşacağım daha doğrusu kolaydan zora doğru birden çok binary olacak içinde şifrelenmiş halde bir text formatı barındıracak ya da bir tür koruma önlemi olacak ve bu korumayı aşmaya çalışacağız bu konuyla oyalanmak isteyenler için eğitici olacağı kanısındayım :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 31 Aralık 2014 - 16:12:28
Debugger olarak Gdb'mi kullanıyorsunuz acaba? Yoksa kullandığınız Hata Ayıklayıcı IDE'nin içinde mi geliyor?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Aralık 2014 - 16:18:27
Alıntı yapılan: kaansef - 31 Aralık 2014 - 16:12:28
Debugger olarak Gdb'mi kullanıyorsunuz acaba? Yoksa kullandığınız Hata Ayıklayıcı IDE'nin içinde mi geliyor?

Ağırlıklı olarak GDB ve hex editor kullanıyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 31 Aralık 2014 - 16:22:14
Teşekkür ederim @Reverser. Peki GDB için önerebileceğiniz Türkçe kaynak var mı? Belgeler'de gördüm ama eski diye bakmadım. Eğer bir çok şey değiştiyse eskiyi öğrenmenin bir anlamı yok çünkü. (İnternette arama yaptığım kaynaklar genelde çok basit oluyor. Benim aradığım tam anlamıyla öğrenebileceğim bir kaynak.)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Aralık 2014 - 16:38:42
Alıntı yapılan: kaansef - 31 Aralık 2014 - 16:22:14
Teşekkür ederim @Reverser. Peki GDB için önerebileceğiniz Türkçe kaynak var mı? Belgeler'de gördüm ama eski diye bakmadım. Eğer bir çok şey değiştiyse eskiyi öğrenmenin bir anlamı yok çünkü. (İnternette arama yaptığım kaynaklar genelde çok basit oluyor. Benim aradığım tam anlamıyla öğrenebileceğim bir kaynak.)

Türkçe kaynak bu konuda neredeyse yok enderunix bir zamanlar güzel anlatımlar yapmıştı özellikle gdb kullanımı ve buffer overflow exploiting tekniğiyle ilgili. Hala duruyor mu bilmiyorum. Yabancı kaynaklara bakın daha çok.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 31 Aralık 2014 - 18:42:16
O kaynağı biliyorum. İkisinide okudum. Keşke GDB'yi tam anlamıyla anlatan bir Türkçe kaynak olsa. Cevabınız için teşekkür ederim @Reverser. İyi yıllar bu arada herkese.
Başlık: Ynt: Reverse Code Engineering Hakkında
Gönderen: heartsmagic - 31 Aralık 2014 - 21:03:17
Alıntı yapılan: ahmetvural32 - 30 Aralık 2014 - 14:44:42
Ubuntuda C yazamamak başlığını

Bu konuyu baltalıyoruz ancak senin o başlığın kapatılmış durumda ve seni bir ankete yönlendiriyor. İstediğin soruların cevabını o ankette bulabilirsin.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ocak 2015 - 04:24:03
Arkadaşlar ilk örneği paylaşıyorum biraz kolay ama olsun :) Uğraşmak isteyenler için hedefiniz şu, programın işleyişini çözerek içeriğinde ham binary olarak bulunan dosyayı dışarı çıkartıp içinde ki şifreyi çözmek ilk örnek için fazlasıyla kolay olduğunu düşünüyorum herkese kolay gelsin :)

http://www.dosya.tc/server37/qPBrkC/crack_me.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 02 Ocak 2015 - 01:51:32
sifre=991244 olabilir mi?
Ogrenmeye calisiyorum ama ozellikle sizden bu dosyanin asm kodlarini aciklayici bir sekilde anlatmanizi bekliyorum sonra ogrenmek acisindan.
Yani soyle
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FLYQ340.png&hash=9dcb28494aec5ef743b907f294f18440775ec4a1) (http://hizliresim.com/LYQ340)
satirlari bize ne demek istemis olabilir ornegin.
asm konusunda daha yeniyim de.
Bu konuda detayli bir asm kod yorumlamasi yaparsaniz sevinirim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 02 Ocak 2015 - 15:39:23
Alıntı yapılan: h454n - 02 Ocak 2015 - 01:51:32
sifre=991244 olabilir mi?
Ogrenmeye calisiyorum ama ozellikle sizden bu dosyanin asm kodlarini aciklayici bir sekilde anlatmanizi bekliyorum sonra ogrenmek acisindan.
Yani soyle
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FLYQ340.png&hash=9dcb28494aec5ef743b907f294f18440775ec4a1) (http://hizliresim.com/LYQ340)
satirlari bize ne demek istemis olabilir ornegin.
asm konusunda daha yeniyim de.
Bu konuda detayli bir asm kod yorumlamasi yaparsaniz sevinirim.


evet, arkadaşım şifre 991244. Aslında örnek tam istediğim gibi olmadı ne yazık ki eğer anlatım olacaksa en baştan başlamalıyım diye düşünüyorum en basit işlemlerden yani.. bu şekilde temel kavramlar yerine oturacaktır. Bu arada asm öğrenmek için disassembler kullanmak iyi bir başlangıç olabilir.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 02 Ocak 2015 - 16:12:36
@Reverser, konuyu dağıtmak istemem fakat uzun zamandır merak ettiğim bir konu var. Çift bellek adreslerine tek bellek adreslerinden daha hızlı erişilir diye bir konu var. Bunun nedenini açıklayabilir misiniz? İsterseniz özel mesaj olarak gönderin. Veya buraya yazalım ki tüm herkes faydalansın. (Alignment - Hizalam diye geçiyor.)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 02 Ocak 2015 - 16:51:41
Alıntı yapılan: kaansef - 02 Ocak 2015 - 16:12:36
@Reverser, konuyu dağıtmak istemem fakat uzun zamandır merak ettiğim bir konu var. Çift bellek adreslerine tek bellek adreslerinden daha hızlı erişilir diye bir konu var. Bunun nedenini açıklayabilir misiniz? İsterseniz özel mesaj olarak gönderin. Veya buraya yazalım ki tüm herkes faydalansın. (Alignment - Hizalam diye geçiyor.)

Bu konu hakkında hiçbir fikrim yok ne yazık ki...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 02 Ocak 2015 - 17:06:23
Cevapladığınız için çok teşekkür ederim. İnternetten araştırdığımda çıkan kaynakların neredeyse hepsi İngilizce maalesef.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 02 Ocak 2015 - 17:06:55
Alıntı yapılan: kaansef - 02 Ocak 2015 - 17:06:23
Cevapladığınız için çok teşekkür ederim. İnternetten araştırdığımda çıkan kaynakların neredeyse hepsi İngilizce maalesef.

kaynakların linkini alabilir miyim acaba ? Merak ettim doğrusu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 02 Ocak 2015 - 18:22:38
Tabii ki

Linkler:

Wikipedia'daki anlatım.
http://en.wikipedia.org/wiki/Data_structure_alignment (http://en.wikipedia.org/wiki/Data_structure_alignment)

IBM'deki anlatım.
http://www.ibm.com/developerworks/library/pa-dalign/ (http://www.ibm.com/developerworks/library/pa-dalign/)

MSDN'deki anlatım
http://msdn.microsoft.com/en-us/library/ms253949.aspx (http://msdn.microsoft.com/en-us/library/ms253949.aspx)

Anahtar kelime olarak "data alignment", "memory alignment" gibi anahtar kelimeleri kullandım. Ayrıca Stackoverflow'da bir çok kez tartışılmış.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Amenofis - 02 Ocak 2015 - 18:46:59
Alıntı yapılan: kaansef - 02 Ocak 2015 - 16:12:36
@Reverser, konuyu dağıtmak istemem fakat uzun zamandır merak ettiğim bir konu var. Çift bellek adreslerine tek bellek adreslerinden daha hızlı erişilir diye bir konu var. Bunun nedenini açıklayabilir misiniz? İsterseniz özel mesaj olarak gönderin. Veya buraya yazalım ki tüm herkes faydalansın. (Alignment - Hizalam diye geçiyor.)

Doğrudur ama çift değil. İşlemcinin word uzunluğunun katları olursa daha hızlı erişirler. Mesela işlemci 32 bitse 4' ün katı olan adreslere daha hızlı erişilir. Bazı mimariler hizasız adresleri hiç desteklemez, hizalı olması şarttır. Örneğin Arm işlemcilerde word yanlızca 2' nin katlarına, dword ise 4' ün katlarına yazılmak zorunda. Bazı mimarilerse hizalı ya da hizasız aynı hızda erişebilmektedir. Mesela Intel core mimarisinde bu sorunu çözdü. Kısacası donanıma bağlı olarak durum değişiyor.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 02 Ocak 2015 - 18:57:34
Alıntı yapılan: Amenofis - 02 Ocak 2015 - 18:46:59
Alıntı yapılan: kaansef - 02 Ocak 2015 - 16:12:36
@Reverser, konuyu dağıtmak istemem fakat uzun zamandır merak ettiğim bir konu var. Çift bellek adreslerine tek bellek adreslerinden daha hızlı erişilir diye bir konu var. Bunun nedenini açıklayabilir misiniz? İsterseniz özel mesaj olarak gönderin. Veya buraya yazalım ki tüm herkes faydalansın. (Alignment - Hizalam diye geçiyor.)

Doğrudur ama çift değil. İşlemcinin word uzunluğunun katları olursa daha hızlı erişirler. Mesela işlemci 32 bitse 4' ün katı olan adreslere daha hızlı erişilir. Bazı mimariler hizasız adresleri hiç desteklemez, hizalı olması şarttır. Örneğin Arm işlemcilerde word yanlızca 2' nin katlarına, dword ise 4' ün katlarına yazılmak zorunda. Bazı mimarilerse hizalı ya da hizasız aynı hızda erişebilmektedir. Mesela Intel core mimarisinde bu sorunu çözdü. Kısacası donanıma bağlı olarak durum değişiyor.

Amenofis, aydınlattığın için teşekkürler kaansef'in sorusunu yanlış anlamışım yazdıklarına katılıyorum. Mimariyle ilgili birazda özellikle MIPS mimarisinde buna benzer bir durumla karşılaşmıştım yanlış hatırlamıyorsam.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 02 Ocak 2015 - 20:20:19
Alıntı yapılan: Reverser - 02 Ocak 2015 - 15:39:23
Alıntı yapılan: h454n - 02 Ocak 2015 - 01:51:32
sifre=991244 olabilir mi?
Ogrenmeye calisiyorum ama ozellikle sizden bu dosyanin asm kodlarini aciklayici bir sekilde anlatmanizi bekliyorum sonra ogrenmek acisindan.
Yani soyle
satirlari bize ne demek istemis olabilir ornegin.
asm konusunda daha yeniyim de.
Bu konuda detayli bir asm kod yorumlamasi yaparsaniz sevinirim.


evet, arkadaşım şifre 991244. Aslında örnek tam istediğim gibi olmadı ne yazık ki eğer anlatım olacaksa en baştan başlamalıyım diye düşünüyorum en basit işlemlerden yani.. bu şekilde temel kavramlar yerine oturacaktır. Bu arada asm öğrenmek için disassembler kullanmak iyi bir başlangıç olabilir.
Hocam vallah anlatimda bulunursaniz cok iyi olur.Genel olrak da ogrenmis oluruz.Ozetle siz bu dosyada  nasil bir yol izlerdiniz?(mumkunse vidyo'lu olarak sesli olmasa da olur :) )
Gdb yukleme konusunda neler yapardiniz.Ben bazi sorunlar ile karsilastim da.
objdump ile dinamik analiz bile yapamadim. :)
extrack_meh fonksiyonun nasil. kaynak kodlari da paylasabilirmisiniz.
Daha cok sorum var da fazla uzakmayim takildikca buradan yardim isterim. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 03 Ocak 2015 - 00:13:38
Peki neden böyle oluyor? Mesela RAM dediğimiz 1 Byte'lık bölümlere ayrılmış bir veri deposu (kabaca). Yani ben 0'ıncı adresede erişsem, 1. adresede erişsem aynı şekilde getirilecekler. Adres Yolu'na veriyi almak istediğim yerin adresini yazacağım, Kontrol Yolu'na okuma isteği yazacağım ve Veri Yolu'ndan veri işlemciye gelecek. Aslında bu mantığı bir zamanlar oturtmuştum, anlamıştım fakat uzun süredir uğraşmadığım için unuttum ve şimdi nedenini çözemedim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 07 Ocak 2015 - 18:53:41
Alıntı yapılan: kaansef - 03 Ocak 2015 - 00:13:38
Peki neden böyle oluyor? Mesela RAM dediğimiz 1 Byte'lık bölümlere ayrılmış bir veri deposu (kabaca). Yani ben 0'ıncı adresede erişsem, 1. adresede erişsem aynı şekilde getirilecekler. Adres Yolu'na veriyi almak istediğim yerin adresini yazacağım, Kontrol Yolu'na okuma isteği yazacağım ve Veri Yolu'ndan veri işlemciye gelecek. Aslında bu mantığı bir zamanlar oturtmuştum, anlamıştım fakat uzun süredir uğraşmadığım için unuttum ve şimdi nedenini çözemedim.

Bunun nedenini amenofis benden çok daha anlaşılabilir bir dil kullanarak anlatmak ister umarım :)

Alıntı yapılan: h454n - 02 Ocak 2015 - 20:20:19
Alıntı yapılan: Reverser - 02 Ocak 2015 - 15:39:23
Alıntı yapılan: h454n - 02 Ocak 2015 - 01:51:32
sifre=991244 olabilir mi?
Ogrenmeye calisiyorum ama ozellikle sizden bu dosyanin asm kodlarini aciklayici bir sekilde anlatmanizi bekliyorum sonra ogrenmek acisindan.
Yani soyle
satirlari bize ne demek istemis olabilir ornegin.
asm konusunda daha yeniyim de.
Bu konuda detayli bir asm kod yorumlamasi yaparsaniz sevinirim.


evet, arkadaşım şifre 991244. Aslında örnek tam istediğim gibi olmadı ne yazık ki eğer anlatım olacaksa en baştan başlamalıyım diye düşünüyorum en basit işlemlerden yani.. bu şekilde temel kavramlar yerine oturacaktır. Bu arada asm öğrenmek için disassembler kullanmak iyi bir başlangıç olabilir.
Hocam vallah anlatimda bulunursaniz cok iyi olur.Genel olrak da ogrenmis oluruz.Ozetle siz bu dosyada  nasil bir yol izlerdiniz?(mumkunse vidyo'lu olarak sesli olmasa da olur :) )
Gdb yukleme konusunda neler yapardiniz.Ben bazi sorunlar ile karsilastim da.
objdump ile dinamik analiz bile yapamadim. :)
extrack_meh fonksiyonun nasil. kaynak kodlari da paylasabilirmisiniz.
Daha cok sorum var da fazla uzakmayim takildikca buradan yardim isterim. :)


Kusura bakmayın anca yanıtlayabiliyorum.

extract_meh(char *data);

fonksiyonu char tipli argüman alıyor (bu argüman, dosyanın ismi) dosya dökümü, (hex formatlı) "sifre.h" headerı içinde daha sonra aşağıdaki kod bloğu ile dosya yazılıyor.

void
extract_meh(char *data)
{
   FILE *handleWrite=fopen(data,"wb");
   fwrite(sifre_bin, 1, 772, handleWrite);
   fclose(handleWrite);
}   
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 12 Ocak 2015 - 19:04:14
Hocam kodlar icin tesekkur ederim.
BIr sorum daha var.
edb'e yuklemede sorun yok ve digerlerinde.(ida)
yalniz gdb de bir turlu programi yukleyemedim.
Bu konuda ne yapmam lazim acaba bilgilendirebilirmisiniz.
Bir onlem mi var? Yeni yeni ogreniyorum daha.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 12 Ocak 2015 - 20:15:13
Alıntı yapılan: h454n - 12 Ocak 2015 - 19:04:14
Hocam kodlar icin tesekkur ederim.
BIr sorum daha var.
edb'e yuklemede sorun yok ve digerlerinde.(ida)
yalniz gdb de bir turlu programi yukleyemedim.
Bu konuda ne yapmam lazim acaba bilgilendirebilirmisiniz.
Bir onlem mi var? Yeni yeni ogreniyorum daha.

Bence IDA ile başlamak güzel. Herhangibir koruma önlemi yok fakat, hex editor ile nop byteları editleyerek string girmiştim yanlış bir editleme yaparak programın yapısını bozmuş olabilirim emin değilim gdb ile hata alıyor musunuz ?

Düzeltme:

Kusura bakmayın yanlış editlenmiş versiyonu paylaşmışım ::) birde bunu deneyin http://s3.dosya.tc/server30/QcBQcB/crack_me.zip.html

reverser@reverser:~/Masaüstü$ gdb ./crack_me
./crack_me'den semboller okunuyor...(no debugging symbols found)...done.
(gdb) info functions
All defined functions:

Non-debugging symbols:
0x08048350  _init
0x08048390  printf@plt
0x080483a0  fclose@plt
0x080483b0  fwrite@plt
0x080483c0  puts@plt
0x080483d0  __gmon_start__@plt
0x080483e0  __libc_start_main@plt
0x080483f0  fopen@plt
0x08048400  _start
0x08048430  __x86.get_pc_thunk.bx
0x08048440  deregister_tm_clones
0x08048470  register_tm_clones
0x080484b0  __do_global_dtors_aux
0x080484d0  frame_dummy
0x080484fd  main
0x08048536  extract_meh
0x080485a0  __libc_csu_init
0x08048610  __libc_csu_fini
0x08048614  _fini
(gdb) disassemble main
Dump of assembler code for function main:
   0x080484fd <+0>: push   %ebp
   0x080484fe <+1>: mov    %esp,%ebp
   0x08048500 <+3>: and    $0xfffffff0,%esp
   0x08048503 <+6>: sub    $0x20,%esp
   0x08048506 <+9>: movl   $0x4,0x1c(%esp)
   0x0804850e <+17>: cmpl   $0x4,0x1c(%esp)
   0x08048513 <+22>: jne    0x8048523 <main+38>
   0x08048515 <+24>: movl   $0x8048984,(%esp)
   0x0804851c <+31>: call   0x80483c0 <puts@plt>
   0x08048521 <+36>: jmp    0x804852f <main+50>
   0x08048523 <+38>: movl   $0x80489c0,(%esp)
   0x0804852a <+45>: call   0x8048536 <extract_meh>
   0x0804852f <+50>: mov    $0x0,%eax
   0x08048534 <+55>: leave 
   0x08048535 <+56>: ret   
End of assembler dump.
(gdb) disassemble extract_meh
Dump of assembler code for function extract_meh:
   0x08048536 <+0>: push   %ebp
   0x08048537 <+1>: mov    %esp,%ebp
   0x08048539 <+3>: sub    $0x28,%esp
   0x0804853c <+6>: movl   $0x80489ca,0x4(%esp)
   0x08048544 <+14>: mov    0x8(%ebp),%eax
   0x08048547 <+17>: mov    %eax,(%esp)
   0x0804854a <+20>: call   0x80483f0 <fopen@plt>
   0x0804854f <+25>: mov    %eax,-0xc(%ebp)
   0x08048552 <+28>: movl   $0x80489cd,(%esp)
   0x08048559 <+35>: call   0x8048390 <printf@plt>
   0x0804855e <+40>: mov    -0xc(%ebp),%eax
   0x08048561 <+43>: mov    %eax,0xc(%esp)
   0x08048565 <+47>: movl   $0x304,0x8(%esp)
   0x0804856d <+55>: movl   $0x1,0x4(%esp)
   0x08048575 <+63>: movl   $0x8048680,(%esp)
   0x0804857c <+70>: call   0x80483b0 <fwrite@plt>
   0x08048581 <+75>: mov    -0xc(%ebp),%eax
   0x08048584 <+78>: mov    %eax,(%esp)
   0x08048587 <+81>: call   0x80483a0 <fclose@plt>
   0x0804858c <+86>: movl   $0x80489e9,(%esp)
   0x08048593 <+93>: call   0x80483c0 <puts@plt>
   0x08048598 <+98>: leave 
---Type <return> to continue, or q <return> to quit---return
   0x08048599 <+99>: ret   
End of assembler dump.
(gdb) Quit



Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 12 Ocak 2015 - 20:35:25
aldigim hata hocam
crack_me/./crack_me": not in executable format: File format not recognized
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 12 Ocak 2015 - 20:39:53
Alıntı yapılan: h454n - 12 Ocak 2015 - 20:35:25
aldigim hata hocam
crack_me/./crack_me": not in executable format: File format not recognized

Yeni paylaştığım dosyada hata olmaması lazım...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 12 Ocak 2015 - 21:06:20
Simdi denedim onda sorun yok hocam.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 12 Ocak 2015 - 21:15:02
pekâlâ sorun yok o halde
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 12 Ocak 2015 - 22:02:56
Sorun cozuldu hocam da.
simdi kafamda soru isareti olustu. diger programlarla acilirken gdb ile niye acilmiyor. Bu gdb de acmak icin ne yapmamiz lazim.
Nasil bir ayar yada degisiklik yaparsak gdb ile acabiliriz.Kisaca boyle durumlarda ne yapmamiz lazim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 12 Ocak 2015 - 22:59:03
Alıntı yapılan: h454n - 12 Ocak 2015 - 22:02:56
Sorun cozuldu hocam da.
simdi kafamda soru isareti olustu. diger programlarla acilirken gdb ile niye acilmiyor. Bu gdb de acmak icin ne yapmamiz lazim.
Nasil bir ayar yada degisiklik yaparsak gdb ile acabiliriz.Kisaca boyle durumlarda ne yapmamiz lazim.

Dosya bölümündeki bir kısım bozuktu o yüzden gdb yürütemedi demekki bunun için başka bir disassembler ile denemekten başka yapacak bir şey yok. Bu arada crack_me çözümünü adım adım paylaşayım mı ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 12 Ocak 2015 - 23:06:27
Vallah cok iyi olur anlatim hocam.
Bekliyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Ocak 2015 - 00:01:38
Öncelikle programın kaynak kodu aşağıdaki gibidir sifre.bin içeriği sifre.h headerı içinde barındırılmaktadır. Basit GDB işlevleri ve komutları hakkında detaylı açıklamaları google üzerinden bulabilirsiniz.

/***************************
 
   crack_me
   coded by Reverser

***************************/

#include <stdio.h>
#include <stdio.h>

#include "sifre.h"

//func prototype
void extract_meh(char *data);


int
main (int argc, char *argv[])
{
  int hack_meh = 4;
 
  if (hack_meh == 4)
    {
      printf("Turkce crack_me.exe anlatim forumda mevcuttur.\n\n- Reverser.\n");
    }
  else
    {
      extract_meh("sifre.bin");
    }
return 0;
}   

void
extract_meh(char *data)
{
   FILE *handleWrite=fopen(data,"wb");
   printf("\n sifre.bin cikartiliyor...");
   fwrite(sifre_bin, 1, 772, handleWrite);
   fclose(handleWrite);
   printf(" Tamam !\n");
}   


main içindeki

   int hack_meh = 4;
 
  if (hack_meh == 4)
    {
      printf("Turkce crack_me.exe anlatim forumda mevcuttur.\n\n- Reverser.\n");
    }
  else
    {
      extract_meh("sifre.bin");
    }


kısmına dikkatli bakalım. Program normal rutininde başlıyor ve else if doğrultusunda bize printf("Turkce crack_me.exe anlatim forumda mevcuttur.\n\n- Reverser.\n"); çıktısını veriyor. Bize lazım olan kısım bu "sorguyu" değiştirmek ve ardından "extract_meh("sifre.bin");" fonksiyonunu döndürmek.

konsola geçiyoruz ve ardından srırasıyla komutlarımızı veriyoruz

gdb crack_me

info functions ile fonksiyon adlarını görebilir ve "disassemble fonksiyon_adı" şeklinde disassemble edebilirsiniz.

info functions

start ile execution'ı başlatalım

start

disassemble main ile main fonksiyonumuza bir bakalım

disassemble main

ve çıktımız aşağıdaki şekilde olmalı

Dump of assembler code for function main:
   0x080484fd <+0>: push   %ebp
   0x080484fe <+1>: mov    %esp,%ebp
=> 0x08048500 <+3>: and    $0xfffffff0,%esp
   0x08048503 <+6>: sub    $0x20,%esp
   0x08048506 <+9>: movl   $0x4,0x1c(%esp)
   0x0804850e <+17>: cmpl   $0x4,0x1c(%esp)
   0x08048513 <+22>: jne    0x8048523 <main+38>
   0x08048515 <+24>: movl   $0x8048984,(%esp)
   0x0804851c <+31>: call   0x80483c0 <puts@plt>
   0x08048521 <+36>: jmp    0x804852f <main+50>
   0x08048523 <+38>: movl   $0x80489c0,(%esp)
   0x0804852a <+45>: call   0x8048536 <extract_meh>
   0x0804852f <+50>: mov    $0x0,%eax
   0x08048534 <+55>: leave 
   0x08048535 <+56>: ret   
End of assembler dump.


Azıcık çıktı okuyalım ve (kaynak kodu bilsekte) ne olduğunu anlamaya çalışalım. Bunun için temel x86 ASM bilmeniz gerekmekte bu da google'da bolca bulunmakta

*extract_meh fonksiyonu ile ilgili gözüme çarpan bir şey bulunmakta "0x80489c0" bu adres nedir ne değildir bir inceleyelim

aşağıda ki şekilde bakıyoruz

printf "%s\n",0x80489c0

çıktı olarak

sifre.bin

vermekte yani, extract_meh fonksiyonu char tipinde bir argüman almakta...

"if (hack_meh == 4) " kısmına geri dönelim, ve sonrasında assembly çıktısına bakalım şu kısıma dikkat ettiniz mi ?

  0x08048513 <+22>: jne    0x8048523 <main+38> JNE-> jump if not equal bu kısımda JNE olan kısmı JE -> jump if equal yaparsak, else if condition akışı değişecek ve program ekrana yazı yazdırmak yerine, "extract_meh(sifre.bin)" fonksiyonunu döndürecek bu şekilde de sifre.bin dosyasına ulaşacağız.

Devam edelim,

x/4x 0x08048513

ile opcode analizi yapıyoruz

0x04c70e75

aldığımız çıktıda en sonda bulunan "75" JNE'nin opcodudur. Intel instruction set konusuyla ilgili detaylı bilgi için: http://ref.x86asm.net/coder32.html

amacımız JNE yi JE yapmak. JE'nin opcodu ise 0x74 bu halde olması gereken ise ,

0x04c70e74

gdb konsolumuza geri dönüyoruz ve

set *(char*)0x08048513=0x04c70e74

yazıp enterlıyoruz bu işlemden sonra JNE , JE ile değiştirildi ve extract_meh(); fonksiyonu çalıştırılmaya hazır.

continue

ile devam ediyoruz

(gdb) continue
Devam ediyor.

sifre.bin cikartiliyor... Tamam !
[Inferior 1 (process 2986) exited normally]
(gdb)


ve mutlu son sifre.bin masaüstüne çıkartıldı. Anlatımı elimden geldiği kadarıyla açıklayıcı yapmaya çalıştım umarım bir yanlışlık yapmamışımdır şimdiden herkese kolay gelsin !

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Ocak 2015 - 19:59:44
Vidyo cekmeyi sevdigim icin vidyo da benden olsun.
http://youtu.be/c9UU8CFPRlc (http://youtu.be/c9UU8CFPRlc)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Ocak 2015 - 20:46:36
Alıntı yapılan: Z3r0nU11 - 14 Ocak 2015 - 19:59:44
Vidyo cekmeyi sevdigim icin vidyo da benden olsun.
http://youtu.be/c9UU8CFPRlc (http://youtu.be/c9UU8CFPRlc)

Video için teşekkürler çok güzel olmuş. Aslında şifre dosyasını encrypt etmeliydim herneyse ilk örnek için gayet yeterli ve eğlenceli oldu bir sonraki örnek daha çok uğraştıracak tekrar teşekkür ederim @Z3r0nU11 :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Ocak 2015 - 20:53:57
Alıntı yapılan: Reverser - 14 Ocak 2015 - 20:46:36
Alıntı yapılan: Z3r0nU11 - 14 Ocak 2015 - 19:59:44
Vidyo cekmeyi sevdigim icin vidyo da benden olsun.
http://youtu.be/c9UU8CFPRlc (http://youtu.be/c9UU8CFPRlc)

Video için teşekkürler çok güzel olmuş. Aslında şifre dosyasını encrypt etmeliydim herneyse ilk örnek için gayet yeterli ve eğlenceli oldu bir sonraki örnek daha çok uğraştıracak tekrar teşekkür ederim @Z3r0nU11 :)
Aslinda senaryo seklinde ben de hazirlamak isterim ama forum kurallari geregi sorun olabilir .Yonetime sormak lazim.Ilgilenen de bulmak lazim tabi kendin pisir kendin ye de olmaz :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Ocak 2015 - 20:56:47
ilgilenen mutlaka çıkacaktır da forum kuralları açısından nasıl olur bilmiyorum daha doğrusu ne olabilir ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Ocak 2015 - 21:09:15
Alıntı yapılan: Reverser - 14 Ocak 2015 - 20:56:47
ilgilenen mutlaka çıkacaktır da forum kuralları açısından nasıl olur bilmiyorum daha doğrusu ne olabilir ?
Konu hakkinda yonetimden bilgi talep edebiliriz aslinda.Neyse @heartmagic okuyunca konu hakkinda bilgi verecektir bize.Olmadi ozelden bir sorariz.Iyicene crack forumuna donmesin sonra :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 15 Ocak 2015 - 00:52:03
Alıntı yapılan: Z3r0nU11 - 14 Ocak 2015 - 21:09:15
Alıntı yapılan: Reverser - 14 Ocak 2015 - 20:56:47
ilgilenen mutlaka çıkacaktır da forum kuralları açısından nasıl olur bilmiyorum daha doğrusu ne olabilir ?
Konu hakkinda yonetimden bilgi talep edebiliriz aslinda.Neyse @heartmagic okuyunca konu hakkinda bilgi verecektir bize.Olmadi ozelden bir sorariz.Iyicene crack forumuna donmesin sonra :)

Kendi yazdığımız uygulamalar üzerinde çalışıyoruz sorun olacağını sanmıyorum yinede @heartsmagic'in geri dönüşünü bekleyelim o halde.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 15 Ocak 2015 - 23:26:57
Konu bu şekilde devam ettiği sürece kendi adıma hiçbir sorun olmaz. Netice olarak "crack" mevzunun temeli de dile, kodlamaya bakan bir şey ve ortada olan bir şeyi yasaklamanın bir anlamı yok. Haliyle bu ve benzeri bir başlıkta da "X uygulamasının kırılması lazım bana" diyen de çıkmayacağına göre sorun olacağını düşünmüyorum.

Fakat, konu tek başıma karar verebileceğim bir konu değil, ben fikir yürütebilecek insanlardan sadece birisiyim. Arkadaşlardan da fikir alır, eğer bir sorun olursa konuya tekrar dönüş yaparım veya kendileri de yorum yapabilirler elbette.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kodadiirem - 16 Ocak 2015 - 02:40:57
"Tersine kod mühendisliği"ne vakıf olmasam da soruya verilen açıklamalı cevaplarınızı okumak, bunların yapılışının videosunu seyretmek çok zevkli. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 17 Ocak 2015 - 00:53:27
Tesekkur ederim hocam cozum icin.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 17 Ocak 2015 - 01:54:04
Alıntı yapılan: kodadiirem - 16 Ocak 2015 - 02:40:57
"Tersine kod mühendisliği"ne vakıf olmasam da soruya verilen açıklamalı cevaplarınızı okumak, bunların yapılışının videosunu seyretmek çok zevkli. :)

Alıntı yapılan: h454n - 17 Ocak 2015 - 00:53:27
Tesekkur ederim hocam cozum icin.

rica ederim konunun ilgi görmesi çok güzel. Yeni bir crack_me hazırlayıp, ilerleyen günlerde paylaşmayı düşünüyorum reverse engineering ile ilgilenenlerin haberi olsun.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 17 Ocak 2015 - 02:06:02
Sabirsizlikla bekliyorum hocam...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 17 Ocak 2015 - 18:38:55
Bu paylasimda benden olsun.
http://s3.dosya.tc/server30/aH4p0m/crackme1.zip.html  (http://s3.dosya.tc/server30/aH4p0m/crackme1.zip.html)

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 18 Ocak 2015 - 15:42:02
Alıntı yapılan: Z3r0nU11 - 17 Ocak 2015 - 18:38:55
Bu paylasimda benden olsun.
http://s3.dosya.tc/server30/aH4p0m/crackme1.zip.html  (http://s3.dosya.tc/server30/aH4p0m/crackme1.zip.html)

Uygulamaya gdb üzerinden müdahale etmek neredeyse mümkün değil en azından ben şimdilik bir yol bulamadım. @Z3r0nU11 gdb ile müdahale etmek mümkün mü ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 18 Ocak 2015 - 16:08:39
b  *0x8048091
Denemekte fayda var. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 18 Ocak 2015 - 16:12:25
Alıntı yapılan: Z3r0nU11 - 18 Ocak 2015 - 16:08:39
b  *0x8048091
Denemekte fayda var. :)

entry point'e ulaşamadım bir türlü teşekkürler :D stripped oluşu çok zahmetli...
0x8048091
bu adrese nasıl ulaştınız açıklayabilir misiniz ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 18 Ocak 2015 - 16:56:31
readelf -l crackme

Elf file type is EXEC (Executable file)
Entry point 0x8048091
There are 2 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000074 0x08048074 0x08048074 0x00126 0x00126 R E 0x1000
  LOAD           0x00019a 0x0804919a 0x0804919a 0x00100 0x00100 RW  0x1000


Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 18 Ocak 2015 - 18:41:44
Alıntı yapılan: Z3r0nU11 - 18 Ocak 2015 - 16:56:31
readelf -l crackme

Elf file type is EXEC (Executable file)
Entry point 0x8048091
There are 2 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000074 0x08048074 0x08048074 0x00126 0x00126 R E 0x1000
  LOAD           0x00019a 0x0804919a 0x0804919a 0x00100 0x00100 RW  0x1000



main'e ulaştım yalnız şöyle bir şey var password sorgusunu düzenlediğim zaman password yanlış olsada herhangi bir şey olmuyor program sonlanıyor bu kadar mı ? Yani, No dışında göreceğim bir string var mı ? "password:" ve "No" dışında başka bir string bulamadım.

Özetleyecek olursak, şifre doğruysa return 0 ile program sonlandırılıyor mu ? Bunu öğrenmek istiyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 18 Ocak 2015 - 18:44:09
Dogru sifre de  "OK" string var.
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FJ7VORo.png&hash=588a481a34545018f34e9424af03273ed334aaae) (http://hizliresim.com/J7VORo)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 18 Ocak 2015 - 19:43:30
Alıntı yapılan: Z3r0nU11 - 18 Ocak 2015 - 18:44:09
Dogru sifre de  "OK" string var.
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FJ7VORo.png&hash=588a481a34545018f34e9424af03273ed334aaae) (http://hizliresim.com/J7VORo)

crackme analiz

1)main

=> 0x8048091: call   0x8048074
   0x8048096: mov    $0x801919b,%eax
   0x804809b: mov    $0x13,%edx
   0x80480a0: call   0x8048115
   0x80480a5: mov    $0x80491ad,%ecx
   0x80480aa: mov    $0xb,%edx
   0x80480af: call   0x8048115
   0x80480b4: mov    $0x3,%eax
   0x80480b9: mov    $0x1,%ebx
   0x80480be: mov    $0x80491d8,%ecx
   0x80480c3: mov    $0x8,%edx
   0x80480c8: int    $0x80
   0x80480ca: call   0x8048122
   0x80480cf: mov    $0x9,%ecx
   0x80480d4: call   0x8048185
   0x80480d9: mov    $0x4,%ecx
   0x80480de: mov    $0x8048096,%esi
   0x80480e3: mov    $0x8049289,%edi
   0x80480e8: repz cmpsb %es:(%edi),%ds:(%esi)
   0x80480ea: je     0x80480fd
   0x80480ec: mov    $0x8048157,%ecx
   0x80480f1: mov    $0x4,%edx
   0x80480f6: call   0x8048115
   0x80480fb: jmp    0x804810c
   0x80480fd: mov    $0x8048142,%ecx
   0x8048102: mov    $0x4,%edx
   0x8048107: call   0x8048115
   0x804810c: mov    $0x1,%eax
   0x8048111: xor    %ebx,%ebx
   0x8048113: int    $0x80


password stringi

0x80491ad

No stringi

0x8048157

scanf() ?

0x8048185

Asıl önemli kısım

   0x80480de: mov    $0x8048096,%esi
   0x80480e3: mov    $0x8049289,%edi
   0x80480e8: repz cmpsb %es:(%edi),%ds:(%esi)
   0x80480ea: je     0x80480fd


OK stringine ulaşmak için gerekli olan adres

0x80480ea

Adresin dökümü

  0x80480ea: je     0x80480fd
   0x80480ec: mov    $0x8048157,%ecx
   0x80480f1: mov    $0x4,%edx
   0x80480f6: call   0x8048115
   0x80480fb: jmp    0x804810c
   0x80480fd: mov    $0x8048142,%ecx
   0x8048102: mov    $0x4,%edx
   0x8048107: call   0x8048115
   0x804810c: mov    $0x1,%eax
   0x8048111: xor    %ebx,%ebx
   0x8048113: int    $0x80
   0x8048115: mov    $0x4,%eax
   0x804811a: mov    $0x1,%ebx
   0x804811f: int    $0x80
   0x8048121: ret   

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 19 Ocak 2015 - 00:07:51
sifre?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Ocak 2015 - 00:52:56
Alıntı yapılan: Z3r0nU11 - 19 Ocak 2015 - 00:07:51
sifre?

Şifreye ulaşamadım ama şifre sorgusunu bypass edebiliyorum. ip ucu alabilir miyim ? :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 19 Ocak 2015 - 01:21:37
8048096

Kontrol sart... :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Ocak 2015 - 01:39:34
Alıntı yapılan: Z3r0nU11 - 19 Ocak 2015 - 01:21:37
8048096
Kontrol sart... :)

Kontrol şart farkındayım önceki mesajımda da önemli yer olarak belirttim zaten ama çıkamadım işin içinden bir türlü  :-X
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 19 Ocak 2015 - 01:40:46
4 bayt karsilastirma....
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Ocak 2015 - 02:15:51
Alıntı yapılan: Z3r0nU11 - 19 Ocak 2015 - 01:40:46
4 bayt karsilastirma....

Çıkamadım işin içinden anlatırsanız çok sevinirim...
son 4 bayt karsilastirması

 
  0x8048096
  0x8049289


yukarıdakiler için mi ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 19 Ocak 2015 - 03:57:17
Kodlar;

    0x08048079    BF0A810408   mov edi, 0x0804819a
    0x0804807e    31C0         xor eax, eax
            0x08048080    31DB         xor ebx, ebx
    0x08048082    8A1E         mov bl, byte ptr [esi]
    0x08048084    01D8         add eax, ebx
            0x08048086    46           inc esi
    0x08048087    39FE         cmp esi,edi
    0x08048089    76F5         jbe 0x08048080
    0x0804808b    A392920408   mov dword ptr [0x08049292],eax
    0x08048090   C3        ret
            0x08048091    B8FEFFFFFF   call section.ehdr
               0x08048074() ; section.phdr0
            0x08048096    B89B910108   mov eax, 0x801919b
            0x0804809b    BA13000000   mov edx, 0x13
            0x080480a0    E870000000   call 0x8048115
               0x08048115() ; section_end.ehdr
            0x080480a5    B9AD910408   mov ecx, 0x80491ad ; "Password: " @ 0x80491ad
            0x080480aa    BA0B000000   mov edx, 0xb
            0x080480af    E861000000   call 0x8048115
               0x08048115() ; section_end.ehdr
            0x080480b4    B803000000   mov eax, 3
            0x080480b9    BB01000000   mov ebx, 1
            0x080480be    B9D8910408   mov ecx, 0x80491d8
            0x080480c3    BA08000000   mov edx, 8
            0x080480c8    CD80         int 0x80
            0x080480ca    E853000000   call 0x8048122
               0x08048122() ; section_end.ehdr
            0x080480cf    B909000000   mov ecx, 9
            0x080480d4    E8AC000000   call 0x8048185
               0x08048185() ; section_end.ehdr
            0x080480d9    B904000000   mov ecx, 4
            0x080480de    BE96800408   mov esi, 0x8048096
            0x080480e3    BF89920408   mov edi, 0x8049289
            0x080480e8    F3A6         rep cmpsb byte [esi], byte ptr es:[edi]
            0x080480ea    7411         je 0x80480fd
            0x080480ec    B957810408   mov ecx, 0x8048157
            0x080480f1    BA04000000   mov edx, 4
            0x080480f6    E81A000000   call 0x8048115
               0x08048115() ; section_end.ehdr
            0x080480fb    EB0F         jmp 0x804810c
            0x080480fd    B942810408   mov ecx, 0x8048142
            0x08048102    BA04000000   mov edx, 4
            0x08048107    E809000000   call 0x8048115
               0x08048115() ; section_end.ehdr
            0x0804810c    B801000000   mov eax, 1
            0x08048111    31DB         xor ebx, ebx
            0x08048113    CD80         int 0x80
            0x08048115    B804000000   mov eax, 4
            0x0804811a    BB01000000   mov ebx, 1
            0x0804811f    CD80         int 0x80
            0x08048121    C3           ret
            0x08048122    8B2D96920408 mov ebp, dword [0x8049296] ; [:4]=0xffffff00
            0x08048128    BBE8800408   mov ebx, 0x80480e8
            0x0804812d    BF01000000   mov edi, 1
            0x08048132    8B03         mov eax, dword [ebx]
            0x08048134    31E8         xor eax, ebp
            0x08048136    75D4         jne 0x804810c
            0x08048138    BDD8910408   mov ebp, 0x80491d8
            0x0804813d    B8B8910408   mov eax, 0x80491b8
            0x08048142    4F           dec edi
            0x08048143    4B           dec ebx
            0x08048144    0A00         or al, byte [eax]
            0x08048146    31DB         xor ebx, ebx
            0x08048148    BE01000000   mov esi, 1
            0x0804814d    83ff00       cmp edi, 0
            0x08048150    740E         je 0x8048160
            0x08048152    B8BC910408   mov eax, 0x80491bc
            0x08048157    4E           dec esi
            0x08048158    6F           outsd dx, dword [esi]
            0x08048159    0A00         or al, byte [eax]
            0x0804815b    83FE00       cmp esi, 0
        0x0804815e    751E         jne 0x804817e
      0x08048160    8B4500       mov eax, dword [ebp]
            0x08048163    25FF000000   and eax, 0xff
            0x08048168    3C46         cmp al, 0x46 ; 'F'
        0x0804816a    7712         ja 0x804817e
            0x0804816c    2C30         sub al, 0x30
            0x0804816e    720E         jb 0x804817e
            0x08048170    3C0A         cmp al, 0xa
            0x08048172    7202         jb 0x8048176
            0x08048174    2C07         sub al, 7
      0x08048176    C1E304       shl ebx, 4
            0x08048179    01C3         add ebx, eax
            0x0804817b    45           inc ebp
            0x0804817c    EBE2         jmp 0x8048160
            0x0804817e    891D89920408 mov dword [0x8049289], ebx ; [:4]=0xffffff00
            0x08048184    C3           ret
            0x08048185    BBCE9A5713   mov ebx, 0x13579ace
            0x0804818a    B8B8910408   mov eax, 0x80491b8
            0x0804818f    3118         xor dword [eax], ebx

Cozum;

    0x08048079    BF0A810408   mov edi, 0x0804819a
    0x0804807e    31C0         xor eax, eax
            0x08048080    31DB         xor ebx, ebx
    0x08048082    8A1E         mov bl, byte ptr [esi]
    0x08048084    01D8         add eax, ebx
            0x08048086    46           inc esi
    0x08048087    39FE         cmp esi,edi
    0x08048089    76F5         jbe 0x08048080
    0x0804808b    A392920408   mov dword ptr [0x08049292],eax
    0x08048090   C3        ret

Yukarida ki islem kodu da  bastan baslayarak dword 804819A daha az olana kadar
depolanir
0x0804808b    A392920408   mov dword ptr [0x08049292],eax
Sonra
0x08049292 adresinde hex degere donustur.

            0x08048122    8B2D96920408 mov ebp, dword [0x8049296] ; [:4]=0xffffff00
            0x08048128    BBE8800408   mov ebx, 0x80480e8
            0x0804812d    BF01000000   mov edi, 1
            0x08048132    8B03         mov eax, dword [ebx]
            0x08048134    31E8         xor eax, ebp
            0x08048136    75D4         jne 0x804810c
            0x08048138    BDD8910408   mov ebp, 0x80491d8
            0x0804813d    B8B8910408   mov eax, 0x80491b8
            0x08048142    4F           dec edi
            0x08048143    4B           dec ebx
            0x08048144    0A00         or al, byte [eax]
            0x08048146    31DB         xor ebx, ebx
            0x08048148    BE01000000   mov esi, 1
            0x0804814d    83FF00       cmp edi, 0
            0x08048150    740E         je 0x8048160
            0x08048152    B8BC910408   mov eax, 0x80491bc
            0x08048157    4E           dec esi
            0x08048158    6F           outsd dx, dword [esi]
            0x08048159    0A00         or al, byte [eax]
            0x0804815b    83FE00       cmp esi, 0
            0x0804815e    751E         jne 0x804817e
            0x08048160    8B4500       mov eax, dword [ebp]
            0x08048163    25FF000000   and eax, 0xff
            0x08048168    3C46         cmp al, 0x46 ; 'F'
            0x0804816a    7712         ja 0x804817e
            0x0804816c    2C30         sub al, 0x30
            0x0804816e    720E         jb 0x804817e
            0x08048170    3C0A         cmp al, 0xa
            0x08048172    7202         jb 0x8048176
            0x08048174    2C07         sub al, 7
            0x08048176    C1E304       shl ebx, 4
            0x08048179    01C3         add ebx, eax
            0x0804817b    45           inc ebp
            0x0804817c    EBE2         jmp 0x8048160



            0x08048142    4F           dec edi
            0x08048143    4B           dec ebx
            0x08048144    0A00         or al, byte [eax]
            0x08048146    31DB         xor ebx, ebx
            0x08048148    BE01000000   mov esi, 1
            0x0804814d    83FG00       cmp edi, 0
          0x08048150    740E         je 0x8048160


4F     O     OK
4B     K
0A 00 or al, [eax]


            0x08048157    4E           dec esi
            0x08048158    6F           outsd dx, dword [esi]
            0x08048159    0A00         or al, byte [eax]
            0x0804815b    83FE00       cmp esi, 0
        0x0804815e    751E         jne 0x804817e

4E     N     NO
6F     O
0A 00 or al, [eax]


Sifre Kontrolu
girilen degeri 0x08048096 adreste 4 bayti karsilastir.

            0x080480d9    B904000000   mov ecx, 4
            0x080480de    BE96800408   mov esi, 0x8048096
            0x080480e3    BF89920408   mov edi, 0x8049289
            0x080480e8    F3A6         rep cmpsb byte [esi], byte ptr es:[edi]
            0x080480ea    7411         je 0x80480fd
            0x080480ec    B957810408   mov ecx, 0x8048157
            0x080480f1    BA04000000   mov edx, 4
            0x080480f6    E81A000000   call 0x8048115
               0x08048115() ; section_end.ehdr
            0x080480fb    EB0F         jmp 0x804810c
            0x080480fd    B942810408   mov ecx, 0x8048142
            0x08048102    BA04000000   mov edx, 4
            0x08048107    E809000000   call 0x8048115
               0x08048115() ; section_end.ehdr
            0x0804810c    B801000000   mov eax, 1
            0x08048111    31DB         xor ebx, ebx
            0x08048113    CD80         int 0x80
            0x08048115    B804000000   mov eax, 4
            0x0804811a    BB01000000   mov ebx, 1
            0x0804811f    CD80         int 0x80

Iste little endian farki :)
   0x08048096    B89B910108   mov eax, 0x801919B


B89B9101

01919BB8 mutlu son(sifre)

Yama offset'i 0x-080480e8

0x080480e8    f3a6         rep cmpsb byte [esi], byte ptr es:[edi]
0x080480ea    7411         je 0x80480fd

Benden bu kadar vidyo sizden olsun bu sefer.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Ocak 2015 - 13:20:36
Teşekkürler anlatım için gdb kullanımı sırasında nasıl olduysa bu baytları hiç endian olarak değerlendirmedim hatta bir ara hex değerleri decimal değerlere dönüştürdüm şu anda çözüme ulaştım zaman bulduğumda video eklerim

Düzeltme:

Video eklendi: http://s3.dosya.tc/server30/Paxlwy/crackme.ogv.zip.html

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 19 Ocak 2015 - 18:57:40
Vidyo icin tesekkur ederim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Ocak 2015 - 22:09:32
Alıntı yapılan: Z3r0nU11 - 19 Ocak 2015 - 18:57:40
Vidyo icin tesekkur ederim.

Rica ederim hocam, unutmadan crackme kaynak kodunu paylaşabilir misiniz ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 19 Ocak 2015 - 22:55:35
:) Programlama dili zaten asm.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Ocak 2015 - 23:08:19
Alıntı yapılan: Z3r0nU11 - 19 Ocak 2015 - 22:55:35
:) Programlama dili zaten asm.

Saf ASM halini merak etmiştim
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 20 Ocak 2015 - 10:18:41
Online vidyo
http://youtu.be/woDfWvsBU_w (http://youtu.be/woDfWvsBU_w)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 27 Ocak 2015 - 00:13:10
Olayi kacirmisiz iyimi :)
ama herkese cok tesekkur ederim. Guzel olmus.
Devamini bekliyorum...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 12 Şubat 2015 - 11:53:21
Bu sefer ki biraz farkli olsun istedim ve olabildigince basite kactim.
Program icine  flag yerlestirdim.
Bakalim kim cozecek. :)
Ugrasmak isteyenler icin kiyida kose de dursun.
http://www.dosya.tc/server38/eWDJjM/crackme2.zip.html (http://www.dosya.tc/server38/eWDJjM/crackme2.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 12 Şubat 2015 - 19:12:13
İlerleyen saatlere doğru linux makinam'da inceleyeceğim istenen nedir ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 12 Şubat 2015 - 20:24:27
Amac program icinde ki kelimeyi bulmak.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Şubat 2015 - 00:26:15
Çok fazla bakma imkanım olmadı fakat anladığım kadarıyla "g&ue+2|w}z" şeklinde bir string var. Bu string bir buffer içine alınıyor daha sonra bir for döngüsü ile bu stringin karakter sayısı kadar(10) döngü işliyor ardından tam olarak anlayamadığım bir decrypting algoritması ile (xor gibi duruyor) işleniyor.


psuedo code


//i döngü elemanı str_len();
string = string_a(&buffer,i);
string_a = string ^ (signed int x) + (i) % 34);


umarım doğrudur geldiğim yere kadar :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 13 Şubat 2015 - 01:36:21
Evet dogru @Reverser.(xor)
Cok kolay mi? oldu  ne  :)

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Şubat 2015 - 03:41:32
Algoritmayı doğru anlamışım demek ki yalnız,
Alıntı yapılan: 84d80y5 - 12 Şubat 2015 - 20:24:27
Amac program icinde ki kelimeyi bulmak.

demiştiniz ben henüz düzgün bir kelime elde edemedim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 13 Şubat 2015 - 03:47:48
Cok zor olmasa gerek sonucta encrypto bir kelime yok.
Kelime zaten decrypto edilmis.  Nereye saklanabilirki :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Şubat 2015 - 04:05:55
Kafam karıştı... Kelimeyi bulmak derken "Cok gizli aman ha kimse gormesin :D" bu mesajdan bahsediyor olamazsınız herhâlde ? Zira flag koydum demiştiniz strings aramasında ortaya çıkan tek anlamlı string bu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 13 Şubat 2015 - 04:22:38
Yok o kadar da basit yapmadim. :)
g&ue+2|w}z
string  decrypto ediliyor ve aciga cikiyor. Iste bizim aradigimiz flag  ta kendisi :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Şubat 2015 - 12:35:31
Tamam o halde sorun yok :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: karboran - 13 Şubat 2015 - 16:27:25
Abi ne yapıyorsunuz siz ya :) . Mesaj burda dursun , konuyu musait zamanımda baştan okuyacağım . Çok eğlenceli duruyor ve eğleniyor görünüyorsunuz :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Şubat 2015 - 16:39:23
Alıntı yapılan: karboran - 13 Şubat 2015 - 16:27:25
Abi ne yapıyorsunuz siz ya :) . Mesaj burda dursun , konuyu musait zamanımda baştan okuyacağım . Çok eğlenceli duruyor ve eğleniyor görünüyorsunuz :)

Hocam buyrun sizide bekleriz katılım az oldu. :)

Alıntı yapılan: 84d80y5 - 13 Şubat 2015 - 04:22:38
Yok o kadar da basit yapmadim. :)
g&ue+2|w}z
string  decrypto ediliyor ve aciga cikiyor. Iste bizim aradigimiz flag  ta kendisi :)

Flag'a ulaşmam yeterli mi değil mi şimdi ? Zira, decrypt işlemi flag ve flag karakter sayısı olan 10 ile işlendiğinde ortaya anlamlı bir şey çıkmıyor.

psuedo code

for(i = 0; i < strlen(); i++)
    {
            cikti[i] = flag[i]^key[i];
    }


key "(signed int) 65535" olabilir mi ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 13 Şubat 2015 - 17:27:42
Alıntı yapılan: Reverser - 13 Şubat 2015 - 16:39:23
Flag'a ulaşmam yeterli mi değil mi şimdi ? Zira, decrypt işlemi flag ve flag karakter sayısı olan 10 ile işlendiğinde ortaya anlamlı bir şey çıkmıyor.

psuedo code

for(i = 0; i < strlen(); i++)
    {
            cikti[i] = flag[i]^key[i];
    }



key "(signed int) 65535" olabilir mi ?
g&ue+2|w}z  encrypt kelimemiz.
Ne oluyor du decrypt ediiyordu.
Decrypt edilen kelime anlamli bir kelimedir.(Bu kesin :) )
kelime cozulmus olrak sizin onu bulmanizi bekliyor.
Gelelim verdiginiz flag'in ne olduguna
Değiştirici = signed
Veri Türü = int
Alabileceği maksimum değer = 65535
Bu durumda kelime olamaz herhalde. :) Keygen Meygen olaylarina hic girmiyorum kafa karismasin diye o yuzden program icinde cozdum.
Tavsiyem programi gerekirse defalarca calistirin adim adim analiz(buraya dikkat)  edin sonucta kelime cozuldukten sonra bir adreste saklaniyordur :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Şubat 2015 - 17:00:44
o değer ile kelime tutamaz tabii ki :)

key = "xxxy" (ya da "yxxx" little endian)

string = "g&ue+2|w}z"

10 tekrar ile şifreye ulaşamıyorum. Amacım memory adresi üzerinden şifreye ulaşmak değil şimdilik. Bu mantığı C koduna çevirip, şifreye ulaşmak.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Şubat 2015 - 19:17:39
Simdiden kolay gelsin.
Biraz kostek olayim o zaman :)
for(i = 0; i < strlen(); i++)

Burada islem sonrasi arttirma var  ya ben islem oncesi yaptiysam. Olabilir mi? :)
key = "xxxy" (ya da "yxxx" little endian)
Evet bir anahtar tanimlamasi bulunmakta.(08048972)
Bu kadar bilgi yeterli.Diger eksikler icin muracatlar asm amca. optimusbraynlar yaniltabilir :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Şubat 2015 - 19:26:34
optimusbrayn derken :D ? Bu arada işlem öncesi zaten psuedo yu yanlış yazmışım ++i şeklinde.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: karakartala - 14 Şubat 2015 - 23:14:35
İyi akşamlar,
Bende bir zamanlar Asm'ye bakmıştım. Karmaşayı görünce bıraktım. http://crackmes.de/ http://www.sctzine.com/crackme/ gibi sitelerden bahseden hiç olmamış. Ben yazayım dedim. Şu anlatımda başlangıç için yeterli görünüyor: http://abdullahog.lu/index.php/hoo-assembly/assembly-giristen-once-son-cikis
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Şubat 2015 - 23:21:41
Alıntı yapılan: karakartala - 14 Şubat 2015 - 23:14:35
İyi akşamlar,
Bende bir zamanlar Asm'ye bakmıştım. Karmaşayı görünce bıraktım. http://crackmes.de/ http://www.sctzine.com/crackme/ gibi sitelerden bahseden hiç olmamış. Ben yazayım dedim. Şu anlatımda başlangıç için yeterli görünüyor: http://abdullahog.lu/index.php/hoo-assembly/assembly-giristen-once-son-cikis

Crackme.de adlı siteden haberim var bilmeyenler için iyi oldu bildirim için teşekkürler.
ASM öğrenmesi pek kolay degil çünkü anlaşılması daha doğrusu, okunması biraz zor.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Şubat 2015 - 23:30:07
Alıntı yapılan: karakartala - 14 Şubat 2015 - 23:14:35
İyi akşamlar,
Bende bir zamanlar Asm'ye bakmıştım. Karmaşayı görünce bıraktım. http://crackmes.de/ http://www.sctzine.com/crackme/ gibi sitelerden bahseden hiç olmamış. Ben yazayım dedim. Şu anlatımda başlangıç için yeterli görünüyor: http://abdullahog.lu/index.php/hoo-assembly/assembly-giristen-once-son-cikis
Bilgi icin tesekkurler @karakartala.
Kendisinin yazilarini okumuslugum var sahsen. Ozellkle kernel bolumu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 15 Şubat 2015 - 14:14:15
decrypted text: knim ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 15 Şubat 2015 - 18:22:09
:( Uzgunum.
10 harften olusuyor kendileri.
Bu arada
Sayin Mert SARICA hocamiz odullu bir yarisma duzenliyor .
Pi hediyem var adli.
Biz burada hediye veremiyoruz :(
Yanliz katilim sarti universite ogrencisi  olmak.
Crackme'yi cozun, Raspi'nin B modelini kapin.
Katilacak herkese kolay gelsin.
Adres:https://www.mertsarica.com/pi-hediyem-var/ (https://www.mertsarica.com/pi-hediyem-var/)
Kendilerini severek takip ediyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 18 Şubat 2015 - 20:38:15
Hocam gercekten de bir kelime var mi ya :)
ara ara hicbirsey bulamadim ben.
Ayrica paylastiginiz odullu yarismaya baktim hocam benim harcim degil :)
Daha zip dosyasini acamadim birde crackme'yi cozmek var.Kim bilir o crackme de ne entrikalar var :)
Sonuc hazirlayan ahlakli korsan :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 18 Şubat 2015 - 22:00:00
@84d80y5, hocam sistem değiştirdiğim için bakamadım bir süre sizden biraz daha zaman rica ediyorum çözümü paylaşmak gibi bir planınız varsa :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 18 Şubat 2015 - 22:23:23
@h454n
Son ipucunu veriyorum.
Programin sonlarina dogru breakpoint atayarak calistrin sonra kelimeyi bulmaya calisin ki encrypt olan kelime decrypt olsun.
@Reverser
Zaman bol senin isin de zor. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 25 Şubat 2015 - 01:38:06
Hocam verdiğiniz son ipucundan sonra buldum kelimeyi :)
Kaç gündür ne uğraştırdı hocam bu ya:)

(gdb) > x/s 0x804a084
0x804a084: "s3cr3+flag"
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 25 Şubat 2015 - 17:35:47
Tebrikler @h454n dogru flag :)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 26 Şubat 2015 - 00:31:19

Bu arada Sayin Mert SARICA hocamizin odullu yarismasinla ilgilenen var mi?
28 subat son gun.
Cok zor mu? yapmis ne :)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2Fbl6gDd.png&hash=d29b463c69248b3177ca039cd7f6ffc58b53da1d) (http://hizliresim.com/bl6gDd)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 08 Mart 2015 - 00:24:19
Basitinden bende bir tane crackme ekleyim sayın hocalarım.
Çok kolay bir crackme oldu ama  en azından boş kalmasın burası.
http://s4.dosya.tc/server/3ZScm3/crackme_test.zip.html  (http://s4.dosya.tc/server/3ZScm3/crackme_test.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: blackwidow - 08 Mart 2015 - 00:56:40
Alıntı yapılan: Reverser - 14 Şubat 2015 - 19:26:34
optimusbrayn derken :D ? Bu arada işlem öncesi zaten psuedo yu yanlış yazmışım ++i şeklinde.

optimus prime ' dır o :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 08 Mart 2015 - 15:32:26
Alıntı yapılan: h454n - 08 Mart 2015 - 00:24:19
Basitinden bende bir tane crackme ekleyim sayın hocalarım.
Çok kolay bir crackme oldu ama  en azından boş kalmasın burası.
http://s4.dosya.tc/server/3ZScm3/crackme_test.zip.html  (http://s4.dosya.tc/server/3ZScm3/crackme_test.zip.html)


//Reversed source code -Reverser

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char string[10];
int value;

printf("Dogru cevap nedir: ");
scanf("%s",&string);
if(strcmp(string, "deneme") == 0) // ret val if=0 ise string1 = string2
{
printf("Supersin");
}
else
{
printf("Cok kotusun, daha iyi olabilirdin.\n");
}
return 0;
}


Fazla basit olmuş :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 08 Mart 2015 - 19:43:30
gdb'ye yükleyebildiniz mi? hocam.
Anti debug tekniği kullanmıstım. :)
Nasıl aştığınızı anlatırsanız çok iyi olur.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 08 Mart 2015 - 20:17:54
@h454n cok zamete girmissin ama stringlerde de sifre gorunuyor ;)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 08 Mart 2015 - 21:34:26
Alıntı yapılan: 84d80y5 - 08 Mart 2015 - 20:17:54
@h454n cok zamete girmissin ama stringlerde de sifre gorunuyor ;)
aynen öyle string araması ile ortaya çıkıyor zaten şifre. Stripped olsaydı biraz daha uğraşırdık breakpoint ile aşılabilir ptrace(); kontrol fonksiyonu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 09 Mart 2015 - 03:15:45
@Reverser paylasimlardan elinizi cektiniz.
Gerci ben islerimi biraz hafifleteyim  guzel  bir crackme hazirlamayi dusunuyorum.
soyle yanarli donerli bol entrika ve aksiyonlu :)
icinde ne arasaniz bol bol serpecem pack anti-debug vs.
Ugrasmak isteyen de cikacak mi bi de o var ama dursun kiyida kosede.
Duzenleme:
Neyse ben yatmadan once bir paylasim da bulunayim.
http://s5.dosya.tc/server/U2c0ae/crackme3.zip.html  (http://s5.dosya.tc/server/U2c0ae/crackme3.zip.html)
bu sefer ipucu falan yok cok cabuk cozuluyor sonra.
Yakinda yazilim yetistiremiyecez :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 09 Mart 2015 - 19:22:57
işlerim çok yoğun bu aralar ama aklımda... Paylaşacağım bende güzel bir crackme. Bu arada yine uğraştıracak bir crackme paylaşmışsınız şöyle bir cipher buldum
0123456789abcdef
bakalım çözebilecekmiyiz :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 09 Mart 2015 - 23:44:29
@Reverser;
Dogrudur biraz ugrastiracak cinsten kendisi. :)
Unutmadan bu arada Ufak bir kac degisiklik yaptim.
Yeni adresi↵
http://s2.dosya.tc/server/mkl0xg/crackme3.zip.html (http://s2.dosya.tc/server/mkl0xg/crackme3.zip.html)
Duzenleme;
Biraz kelimesi hafif kalabilir :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 09 Mart 2015 - 23:58:09
Alıntı yapılan: 84d80y5 - 09 Mart 2015 - 23:44:29
@Reverser;
Dogrudur biraz ugrastiracak cinsten kendisi. :)
Unutmadan bu arada Ufak bir kac degisiklik yaptim.
Yeni adresi↵
http://s2.dosya.tc/server/mkl0xg/crackme3.zip.html (http://s2.dosya.tc/server/mkl0xg/crackme3.zip.html)
Duzenleme;
Biraz kelimesi hafif kalabilir :)

Çoklu fonksiyonlar görüyorum... Hocam peki bu kadar komplike olmayan başka crackmeler oluştursak ? Seviye yükselince katılımda olmuyor sanki. Yani işi biraz daha basite indirgesek ve zaman ilerledikçe üstüne bir şeyler koydukça seviyeyi yükseltsek daha iyi olabilir gibi siz ne düşünüyorsunuz ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 10 Mart 2015 - 00:25:01
Olur aslinda yada paylasimlara seviye de getirebiliriz.
1,2,3 gibi
3 yuksek bilgi
2 orta seviye
Vs gibi.
Surekli basit yapmakta ilgi kaybina neden olabilir diye  dusunuyorum ben yada yanlis dusunup sogutuyor da olabilirim. Bilemedim.
(Gerci ben son crackme de  cok abartmisim  kabul ediyorum)
Bu konuda kararsizim ben size birakiyorum basit diyorsaniz basit hazirlayalim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 10 Mart 2015 - 00:35:48
Alıntı yapılan: 84d80y5 - 10 Mart 2015 - 00:25:01
Olur aslinda yada paylasimlara seviye de getirebiliriz.
1,2,3 gibi
3 yuksek bilgi
2 orta seviye
Vs gibi.
Surekli basit yapmakta ilgi kaybina neden olabilir diye  dusunuyorum ben yada yanlis dusunup sogutuyor da olabilirim. Bilemedim.
(Gerci ben son crackme de  cok abartmisim  kabul ediyorum)
Bu konuda kararsizim ben size birakiyorum basit diyorsaniz basit hazirlayalim.

Yok hocam estağfurullah, hakkını veriyorsunuz bu işin :D Bana kalırsa seviyeli yapalım en basitten başlayalım. Hello world falan değil de, matematiksel işlemler, döngüler temel compare işlemi jumplar gibi.. ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 12 Mart 2015 - 21:12:34
Sayin Mert SARICA hocamizin yarismasini paylasmistim buradan.
Simdi hazir vaktim varken vidyosunu cekip  paylasmak istedim.
Ben biraz farkli yol izlemistim cunku.Belki ayni yolu izleyenlerde vardir bilmiyorum.
http://youtu.be/4g7-qk3Os9k  (http://youtu.be/4g7-qk3Os9k)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Mart 2015 - 22:19:46
ilk reverse_me yi paylaşıyorum arkadaşlar özel olarak herhangi bir derleme methodu kullanılmadı seviye olarak çok kolay tek yapmanız gereken gdb ile açmanız ASM kodunu anlamanız ve ASM kodunu C ya da benzeri başka bir dile çevirmeniz. Konun başlığı ile tam ilişkili olarak bu sefer ASM kodunu başka bir dile çevirmenizi istiyorum. Katılım oldukça ve bir önce paylaştığım dosya reverse edildikce seviye yükselecek.

ekran görüntüsü:

(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2Fq4nJgD.png&hash=80669b7d3b7eeb7cc71db888bb6ec5b9842f7145)

reverse_me hakkında bilgi:

ELF Başlığı:
  Sihir:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Sınıf:                             ELF32
  Veri:                              2's complement, little endian
  Sürüm:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Sürümü:                       0
  Tip:                              UYGU (Uygulama dosyası)
  Makine:                           Intel 80386
  Sürüm:                           0x1
  Girdi noktası adresi:               0x8048320
  Yazılım başlıkları başlangıcı:          52 (bayt dosya içinde)
  Bölüm başlıkları başlangıcı:          4428 (bayt dosya içinde)
  Seçenekler:                             0x0
  Bu başlığın boyu:               52 (bayt)
  Yazılım başlık boyu:           32 (bayt)
  Number of program headers:         9
  Bölüm başlık boyu:           40 (bayt)
  Bölüm başlıkları sayısı:         30
  Bölüm başlığı dizge tablo endeksi: 27


indirme bağlantısı: http://s5.dosya.tc/server/kqLnnI/reverse1.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Mart 2015 - 00:23:16
Seriye bagladim :)

#include <stdint.h>
#include <stdio.h>
int main(int argc, char ** argv) {
    puts("\x52\x65\x76\x65\x72\x73\x65\x5F\x6D\x65\x20\x4E\x6F\x3A\x20\x30\x31\x0A\x53\x65\x76\x69\x79\x65\x20\x5B\x4B\x6F\x6C\x61\x79\x5D\x0A\x69\x73\x74\x65\x6E\x65\x6E\x3A\x20\x41\x53\x4D\x20\x6B\x6F\x64\x75\x6E\x75\x2C\x20\x43\x20\x79\x61\x20\x64\x61\x20\x62\x65\x6E\x7A\x65\x72\x69\x20\x62\x61\xC5\x9F\x6B\x61\x20\x62\x69\x72\x20\x64\x69\x6C\x65\x20\xC3\xA7\x65\x76\x69\x72\x6D\x65\x6B\x2E\x0A\x2D\x52\x65\x76\x65\x72\x73\x65\x72\x2E");
    return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Mart 2015 - 00:35:21
Alıntı yapılan: 84d80y5 - 14 Mart 2015 - 00:23:16
Seriye bagladim :)

#include <stdint.h>
#include <stdio.h>
int main(int argc, char ** argv) {
    puts("\x52\x65\x76\x65\x72\x73\x65\x5F\x6D\x65\x20\x4E\x6F\x3A\x20\x30\x31\x0A\x53\x65\x76\x69\x79\x65\x20\x5B\x4B\x6F\x6C\x61\x79\x5D\x0A\x69\x73\x74\x65\x6E\x65\x6E\x3A\x20\x41\x53\x4D\x20\x6B\x6F\x64\x75\x6E\x75\x2C\x20\x43\x20\x79\x61\x20\x64\x61\x20\x62\x65\x6E\x7A\x65\x72\x69\x20\x62\x61\xC5\x9F\x6B\x61\x20\x62\x69\x72\x20\x64\x69\x6C\x65\x20\xC3\xA7\x65\x76\x69\x72\x6D\x65\x6B\x2E\x0A\x2D\x52\x65\x76\x65\x72\x73\x65\x72\x2E");
    return 0;
}


Hocam eminim çoktan halletmişsinizdir siz. Katılım yapacak arkadaşlar için, yukarıda ki gibi shellcode şeklinde değilde normal şekilde(okunabilir halde) ya da en azından psuedo kod bekliyorum.

Edit: @84d80y5, eksik olmuş bu arada geri kalanı nerede ?  yazı çevrilmeyecek tabii ki :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Mart 2015 - 01:00:43
Tablet ile online servis  araciyla  bu kadar.
Kalani pc basinda. :) Tam inceleme sansim olmadi ne yazik ki. :( insallah musait bir zamanda.
Bu kopyala yapistir sadece :)
Online servisler de is yapiyormus ya ben bu kadar zannetmiyordur yaklassin. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 14 Mart 2015 - 01:06:01
konsol şart :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 14 Mart 2015 - 01:07:31
Evet konsol birde egitim sart :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 15 Mart 2015 - 18:14:51
çözüm için bekleyeyim mi biraz daha ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 19 Mart 2015 - 12:24:01
Bir şey soracam bu işi nasıl yapıyorsunuz. Yani hangi prıogram tersine çeviriyor.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 19 Mart 2015 - 13:01:09
@nurullahisrgan, sadece GDB kullanarak disassemble edilmiş assembly kodunu, okuması daha kolay olan başka bir dile çeviriyoruz.

Çözüm:

Kendi yazdığım binary'i reverse etmem biraz komik oldu ama olsun en azından merak edenler ya da başlamak isteyenler için en kolay haliyle anlatıyorum.


Dump of assembler code for function main:
   0x0804841d <+0>: push   %ebp
   0x0804841e <+1>: mov    %esp,%ebp
   0x08048420 <+3>: and    $0xfffffff0,%esp
   0x08048423 <+6>: sub    $0x20,%esp
   0x08048426 <+9>: movl   $0xf,0x14(%esp)
   0x0804842e <+17>: movl   $0x5,0x18(%esp)
   0x08048436 <+25>: movl   $0x80484f0,(%esp)
   0x0804843d <+32>: call   0x80482f0 <puts@plt>
   0x08048442 <+37>: mov    0x18(%esp),%eax
   0x08048446 <+41>: mov    0x14(%esp),%edx
   0x0804844a <+45>: add    %edx,%eax
   0x0804844c <+47>: mov    %eax,0x1c(%esp)
   0x08048450 <+51>: mov    $0x0,%eax
   0x08048455 <+56>: leave 
   0x08048456 <+57>: ret   
End of assembler dump.


reverse1 sadece main fonksiyondan oluşuyor  ve dikkatli bakıldığında sadece toplama işlemi yaptığı anlaşılıyor.

0x0804844a <+45>: add    %edx,%eax

hangi iki değeri topladığını bulmak için toplama işlemine breakpoint koyuyoruz. (rutin, program toplama işlemi yapamadan kırılacak)

b *0x0804844a

ardından run ile devam ediyoruz.

run

sonrasında info reg ile registerları ve değerlerini göreceğiz.

info reg


eax            0x5 5
ecx            0xb7fd8000 -1208123392
edx            0xf 15
ebx            0xb7fc1000 -1208217600
esp            0xbffff100 0xbffff100
ebp            0xbffff128 0xbffff128
esi            0x0 0
edi            0x0 0
eip            0x804844a 0x804844a <main+45>
eflags         0x282 [ SF IF ]
cs             0x73 115
ss             0x7b 123
ds             0x7b 123
es             0x7b 123
fs             0x0 0
gs             0x33 51


eax ve edx'in değerlerine dikkat ! [eax -> 0x5   5] -  [edx -> 0xf     15]  bu durumda toplanan iki adet değerinde integer olduğunu birinin 5, diğerin 15 olduğunu söylemek mümkün. Birde toplama işleminden hemen sonra eax'ın değerine bakalım. :)


eax            0x14 20
ecx            0xb7fd8000 -1208123392
edx            0xf 15
ebx            0xb7fc1000 -1208217600
esp            0xbffff100 0xbffff100
ebp            0xbffff128 0xbffff128
esi            0x0 0
edi            0x0 0
eip            0x804844c 0x804844c <main+47>
eflags         0x216 [ PF AF IF ]
cs             0x73 115
ss             0x7b 123
ds             0x7b 123
es             0x7b 123
fs             0x0 0
gs             0x33 51


görüldüğü gibi

eax            0x14 20

bu durumda şöyle kod yazılabilir.


//reversed source code

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
    int eax = 0x5; // 5
    int edx = 0xf; // 15
    int toplam;

    toplam = eax + edx;

}


derleyip, çalıştırırsak Process returned 20 (0x14) uyarısını görebiliriz. :)

Dip Not: Yeni başlayanlar için, çok güzel bir örnek oldu. Bundan sonraki seri bu şekilde kolaydan başlayıp zor'a doğru devam edecek bu nedenle merak eden herkesin katılımını bekliyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 20 Mart 2015 - 15:11:42
Hocam, bu gdbyle nasıl gösteriyoruz dissamble kodunu. Dün birşeyler yaptım ama sonuç 0
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 20 Mart 2015 - 19:02:27
önceki mesajlarda video paylaşmıştım şuradan ulaşabilirsin. [1] Google'da fazlasıyla örnek mevcut.
[1] http://s3.dosya.tc/server30/Paxlwy/crackme.ogv.zip.html

örnek:

gdb reverse1

disas main

dersen main'i disassemble edersin.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ata - 20 Mart 2015 - 19:44:50
<html>
<head>
<script>
function foo(e) {
   var srchstr = new RegExp(document.getElementById("srchstr").value,'gi');
   var replstr = document.getElementById("replstr").value;
   var infile = document.getElementById('input').files[0];
   var reader = new FileReader();
   reader.addEventListener("loadend", function() {
         var str = reader.result;
         document.getElementById("intext").innerHTML = str;
         var newstr = str.replace(srchstr,replstr);
         document.getElementById("outtext").innerHTML = newstr;
         window.location.href = "data:application/x-download;charset=utf-8," + encodeURIComponent(newstr);
         });
   reader.readAsText(document.getElementById("input").files[0]);
};
</script>
</head>
<body >
<h4>Select a Text File</h4>
<input type="file" id="input" onchange="foo(this.files)" ></input>
<h4> Enter Search String </h4>
<input type="text" id="srchstr"> </input>
<h4> Enter Replace String </h4>
<input type="text" id="replstr"> </input>
<pre><h4> PreMod       PostMod </h4></pre>
<textarea  id = "intext" rows ="9"  cols = "8" > </textarea>
<textarea  id = "outtext" rows ="9"  cols = "8" > </textarea>
</body>
</html>
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 20 Mart 2015 - 19:49:06
@ata, Amaç nedir ? Ayrıca lütfen code etiketi içinde paylaş.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ata - 20 Mart 2015 - 19:54:42
tamam haklısın etıketlere alısamadım
FileWriter standart olmayan şimdi geri isimli yazma şekilde ??
ama mod veri indirilebilir kullanarak uri (HACK)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 20 Mart 2015 - 19:58:21
Alıntı yapılan: ata - 20 Mart 2015 - 19:54:42
tamam haklısın etıketlere alısamadım
FileWriter standart olmayan şimdi geri isimli yazma şekilde ??
ama mod veri indirilebilir kullanarak uri (HACK)

dafuq what u mean rofl ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: rutku - 20 Mart 2015 - 20:55:12
Alıntı yapılan: ata - 20 Mart 2015 - 19:54:42
tamam haklısın etıketlere alısamadım
FileWriter standart olmayan şimdi geri isimli yazma şekilde ??
ama mod veri indirilebilir kullanarak uri (HACK)

Robot sanırım. Google translate ile mesaj yazıyor olabilir. Paylaştığı Js kodunun konunun alakası yok.
Bu arada tersine kod mühendisliği ile usb sürücülü oyuncağı nasıl kullanılacağını anlatan bir yazı mevcut. İlginç bir yazı.

http://www.linuxvoice.com/drive-it-yourself-usb-car-6/
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: blackwidow - 20 Mart 2015 - 23:14:14
Hocam adam aynı şu durum olmuş

'the person you have loved cannot be reached at the moment, please try again later' :D

aslında foruma post atmadan önce stackflowover'daki gibi arada yapmak lazım 'Ben Robot Değilim' diye bir chech :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 21 Mart 2015 - 00:33:05
mesajı atmış kaçmış gibi gözüküyor daha çok :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 21 Mart 2015 - 01:17:24
Arkadaşın bu başlıktan sonra birçok iletisi var. Artık buraya dönüp ne amaçladığını yazar mı bilemiyorum tabi.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 21 Mart 2015 - 15:20:43
Alıntı yapılan: Reverserönceki mesajlarda video paylaşmıştım şuradan ulaşabilirsin. [1] Google'da fazlasıyla örnek mevcut.
[1] http://s3.dosya.tc/server30/Paxlwy/crackme.ogv.zip.html

örnek:

Kod: [Seç]gdb reverse1
Kod: [Seç]disas main
dersen main'i disassemble edersin.
Çok teşekkürler.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 23 Mart 2015 - 16:53:25
Yarın bir crack_me paylaşırım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 23 Mart 2015 - 17:56:27
Alıntı yapılan: nurullahisrgan - 23 Mart 2015 - 16:53:25
Yarın bir crack_me paylaşırım.

bugün paylaşın :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 24 Mart 2015 - 14:42:56
Alıntı yapılan: ReverserAlıntı yapılan: nurullahisrgan - 23 Mart 2015 - 16:53:25Yarın bir crack_me paylaşırım.
bugün paylaşın
Dün yanımda değildi buyrun indirme linki:
http://s2.dosya.tc/server/neEbA3/crack_me.zip.html

İstenen: Bir sayı var, ve bu sayıya bir işlem yapılıp yeni sonuc sonuc değişkenine aktarılıyor. Bu sayıyı, yapılan işlemi ve sonucu bulunuz.

Edit: Yanlışlıkla windowtaki dosyası aktarmışım sorun olur mu acaba.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 24 Mart 2015 - 14:50:21
Benim icin sıkıntı yok eve gecince bakicam cozumu bulan paylasmasin hemen :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 24 Mart 2015 - 14:52:05
Alıntı yapılan: ReverserBenim icin sıkıntı yok eve gecince bakicam cozumu bulan paylasmasin hemen
Bu arada çözümü nasıl yaptığınızı da anlatır mısınız? bulunca. Çünkü ben sonuç değişkenini bulamadım.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Mart 2015 - 16:23:38

Sorun çıkarsa ubuntu için: http://s2.dosya.tc/server/zSKzdm/crack_me.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 24 Mart 2015 - 17:58:53
Cozum

  push      ebp     
                  mov        ebp, esp
                  sub        esp, 0x10
{


                  mov        dword [ss:ebp+var_8], 0x6   
                  mov        eax, dword [ss:ebp+var_8]   
                  imul       eax, dword [ss:ebp+var_8]     
                  mov        dword [ss:ebp+var_4], eax

                  a = 6
                  b = a * a


                  mov        eax, 0x0
                  leave                         
                  ret
return 0;
}

Sonuc b =36
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 24 Mart 2015 - 18:04:07
hocam keşke direkt paylaşmasaydınız tam ben paylaşıyordum. :D


//Reversed source code

#include <stdio.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    int val = 0x6;
    int total = val * val; //0x24 - 36
    return 0;
}


değişkeni bulmak için break point kullanın ilk hali 6.

b *0x080483fb

çarpma işleminden sonrası için

b *0x080483ff

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 24 Mart 2015 - 18:10:48
Aslinda vaktim yoktu @Reverser.
Ama bir goz atinca incelemis oldum.Inceleyince de paylasmamak olmaz :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 24 Mart 2015 - 18:22:39
@84d80y5, haklısın hocam herneyse aynı kapıya çıkıyor sonuçta. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 24 Mart 2015 - 23:01:55
Alıntı yapılan: nurullahisrganYarın bir crack_me paylaşırım.
Yalniz bu crackme olmamis.Daha dogrusu crackme demek dogru olmaz.Sadece belirtmek istedim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 24 Mart 2015 - 23:06:18
Aynen daha çok "reverse me" olmuş.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 25 Mart 2015 - 14:31:43
Vallah ben de bilmiyorum ne olduğunu neyse bende buldum. for döngüsü kullanılmış bir programı bulabiliyor musunuz?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 25 Mart 2015 - 14:34:07
Evet buluyoruz bir tane daha bekliyoruz sizden.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 25 Mart 2015 - 14:39:00
Onu da yarına aktarırım. GDB kullanımı için ingilizce dersler var googlede türkçe varsa bir link ile belirtebilir misiniz?

Edit: İngilizce olarak en güzeli burası bence: http://visualgdb.com/gdbreference/commands/disassemble
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 26 Mart 2015 - 00:28:40
kaynak için teşekkürler bilmeyen arkadaşlar için faydalı olacaktır.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 26 Mart 2015 - 16:58:16
Basit bir crackme.
6a, 75' e karsi :) + birde parolalari bulabilirsiniz :)_
http://s3.dosya.tc/server/m8wkuh/crackme_game.zip.html (http://s3.dosya.tc/server/m8wkuh/crackme_game.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 26 Mart 2015 - 17:16:02
Hadi iki tane benden old,sun. Zorluk seviyesi zor.
http://s2.dosya.tc/server/MNc3GE/ornek.zip.html
Burada istenen for içinde dönen kodu bulunuz.
http://s2.dosya.tc/server/MNc3GE/ornek2.zip.html
Burada c ve i ilk değer atanmamış iki değer. i for için. toplam 10 döngü gerçekleştiriliyor. Ekrana ilk olarak 1 ve 2 yazılıyor ardından gelenler bunun devamı olacaktır. Bunu c veya başka bir dile çeviriniz.

Bunları henüz çözmedim eve gidince bugün uğraşırım.

@84d80y5 bugün onunla da uğraşırım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 26 Mart 2015 - 18:10:04
Basit bir crackme zaten @nurullahisrgan
Sizinkilerin ben kodlarini paylasayim.
ornek

#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
  int i;
  int j;

  for ( i = 0; i != 9; ++i )
  {
    for ( j = 0; j != 9; ++j )
      printf("(%d, %d) ", i, j);
    putchar(10);
  }
  return 0;
}

ornek2

#include <stdio.h>
#include <stdio.h>
int main(int argc, const char *argv[])
{
  int v;
  signed int i;
  signed int a;
  signed int b;

  a = 1;
  b = 2;
  printf("%d \n%d \n", 1, 2);
  for ( i = 1; i <= 14; ++i )
  {
    v = a + b;
    a = b;
    b = v;
  }
  return 0;
}

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 26 Mart 2015 - 18:34:35
yine geç kalmışım.... hocam keşke birini çevirseydiniz....
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 26 Mart 2015 - 18:45:38
Ben sizi goremeyince ikisini de aradan cikartayim dedim :)
crackme var.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 26 Mart 2015 - 18:57:20
üstünde uğraşıyorum :)

Edit:

@84d80y5, tamamen reverse etmeyi başardım iki adet şifre var biri "istanbul" diğeri "1453"


//Reversed source code - Reverser

#include <stdio.h>
#include <stdlib.h>

int pass_control (char *unk_0);

//0x080484fd
int main(int argc, char *argv[])
{

if(argc <= 1 )
{
printf("Kullanim %s <parola>\n",argv[0]);
}
else
{
if (pass_control(argv[1]) == 0)
{
printf("\nGiris Basarili");
}
else
{
    printf("\nGiris basarisiz");
}

}
return 0;
}

//0x0804849b
int pass_control (char *unk_0)
{

if(strcmp(unk_0, "1453") == 0)
{
return 0;
}
else if (strcmp(unk_0, "istanbul") == 0)
{
return 0;
}
else
{
return 1;
}
}

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 26 Mart 2015 - 19:46:36
Dogru sifreler.
BIrde su var.



0804849b <pass_control>:
.....
80484ef: 75 07                jne    80484f8 <pass_control+0x5d>
.....

parola kontrolunu push edersek iki kontrolu de asmis oluruz.
Gerci  75 'i 74 yapark da asabilirzi ama iki kontrolude degistirmemiz gerekir.
en kestirme yolu  75'i 6a yapark cozmek.
Birde icerisinde buffer  var ama o daha ileri ki zamanlarda. Suan kafa karistirmaktan baska biseye yaramaz.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 26 Mart 2015 - 19:54:50
evet buffer'ı farkettim ilk etapta unk_0 pass_controle gönderiliyor ardından strcpy(buffer,unk_0) ile bufferlanıyor ardından strcmp işlemi buffer üzerinden yapılıyor ama gereksiz olduğunu düşündüğümden çevirmedim.

bu de bufferlı hali.


//Reversed source code - Reverser

#include <stdio.h>
#include <stdlib.h>

int pass_control (char *unk_0);

//0x080484fd
int main(int argc, char *argv[])
{

if(argc <= 1 )
{
printf("Kullanim %s <parola>\n",argv[0]);
}
else
{
if (pass_control(argv[1]) == 0)
{
printf("\nGiris Basarili");
}
else
{
    printf("\nGiris basarisiz");
}

}
return 0;
}

//0x0804849b
int pass_control (char *unk_0)
{

     char buffer[256];
strcpy(buffer,unk_0);

if(strcmp(buffer, "1453") == 0)
{
return 0;
}
else if (strcmp(buffer, "istanbul") == 0)
{
return 0;
}
else
{
return 1;
}
}


Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 27 Mart 2015 - 16:40:53
Ben şu şifreyi nasıl bulduğunuzu anlamadım. Yarın 5-6 tane paylaşacağım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 27 Mart 2015 - 18:30:54
@nurullahisrgan, string araması ile görebilirsiniz aşağıdaki şekilde.
strings crackme_game
ya da
disas pass_control
x/s 0x8048605
x/s 0x8048600
şeklinde görebilirsiniz.

Bir tane paylaşımda ben yapayım ama bu sefer ki biraz daha farklı olacak.

Öyle bir yöntem uygulayın ki, şifre kontrol mekanizmasını değiştirmeden ya da doğru şifreyi girmeden koruma aşılabilsin. (yani şifre yanlış olsa bile, koruma aşılmış olmalı. Unutmayın assembly edit yok!)
şu şekilde olmalı:

(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FGvOOB7.png&hash=bce319edfca5ae1dca4a75647741ecaf435c4565)

indirme bağlantısı: http://s5.dosya.tc/server/mFAVdb/pwn_it.zip.html


Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 27 Mart 2015 - 20:52:15
@Reverser sifrenin 16 karakter olmasi yeterli.fazlasi puff  :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 27 Mart 2015 - 21:07:00
@84d80y5, aynen öyle hocam bir önceki örnekte strcpy(); fonksiyonu kullanınca aklıma buffer overflow geldi :) peki 16 karakteri aşarsak ne olur ? Mesela 35 adet A karakteri girsek ?


Starting program: /home/reverser/Masaüstü/pwn_it

Sifreyi girin :
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Sifre yanlis.

Tebrikler! Koruma asildi.


Program received signal SIGSEGV, Segmentation fault.
0x41414141 in ?? ()


ebp            0x41414141 0x41414141

0x41 -> 'A'

Bu durumda base pointerımız overwritten olmuş oldu :) Aslında buffer overflow exploting ile ilgilide bilgi verebiliriz ilerleyen zamanlarda ama şimdilik kafa karıştırmayalım.

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 27 Mart 2015 - 21:13:39
Buffer icin ben hem video hemde anlatim hazirlamistim. Mantigi anlamak isteyenler icin video adresi calismiyor ama anlatim yerinde. :)Kardesimin hesabindan ama artik tek hesap kullaniyoruz ortak. :)
Onceki ornekte 29 karakterli bir sifre yeterliydi :)
Soyle giris yapabilirdiniz?

$ echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAA|xargs ./crackme_game
Giris Basarili
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 28 Mart 2015 - 01:26:25
evet farketmiştim yukarıda belirttiğim gibi strcpy(); fonksiyonunu görünce direkt aklıma buffer overflow geldi. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 28 Mart 2015 - 12:28:00
1-> http://s2.dosya.tc/server2/OVJGSP/string.zip.html
2-> http://s2.dosya.tc/server2/OVJGSP/ogrkuyruk.zip.html
3-> http://s2.dosya.tc/server2/OVJGSP/ornek.zip.html
4-> http://s2.dosya.tc/server2/OVJGSP/sifre.zip.html
5-> http://s2.dosya.tc/server2/OVJGSP/asal.zip.html

İstenen: Paylaşımları C veya daha farklı bir dile çevirmek. Kodlar 2-3 tanesi C++ ile yazıldı.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 28 Mart 2015 - 12:54:49
4-) sifre.zip


//Reversed source code - Reverser
//file: sifre x32

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
int inpt_0;
int pw_0 = 852460; //signed int
int pw_1 = 951753; //signed int
printf("Sifreyi giriniz: ");

scanf("%d",&inpt_0);

if(inpt_0 != pw_0 && inpt_0 != pw_1)
{
printf("\nSifre yanlis...\n");
}
else
{
printf("\nSifre dogru...\n");
}
return 0;
}


1-)string.zip


//Reversed source code - Reverser
//file: string x32

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

#define MAX 256

int main(int argc, char *argv[])
{
   char kelime[MAX], temp;
   char temp_buffer[MAX];
   int i, j = 0;

   printf("Kelime giriniz: \n");
   gets(kelime);
   
   sprintf(temp_buffer,kelime);
   
   i = 0;
   j = strlen(kelime) - 1;

   while (i < j) {
      temp = kelime[i];
      kelime[i] = kelime[j];
      kelime[j] = temp;
      i++;
      j--;
   }

   printf("%s Tersi: %s\n", temp_buffer,kelime);
   return 0;
}


5-) asal.zip


//Reversed source code - Reverser
//file: asal x32

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int a = 0;
int b, i, j, flag;
    int counter = 0;

    printf("0-x arasindaki asal sayilari bulan, x giriniz: \n");
    scanf("%d",&b);
    for(i=a+2; i<b; ++i)
    {
        flag=0;
        for(j=2; j<=i/2; ++j)
        {
            if(i%j==0)
            {
                flag=1;
                break;
            }
        }
        if(flag==0)
{
            counter++;       
            printf("%d\n", i);
        }
           
    }
printf("%d tane asal sayi bulundu!\n",counter);
return 0;
}

zaman buldukça mesajı güncelleyeceğim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 30 Mart 2015 - 17:08:41
@Reverser, Hocam değişken isimleri geri kalanlar doğru. Hatırlıyorum da ben bu kodları yazarken 2 gün uğraşmıştım. Çözmesi daha kolaymış meğer.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 30 Mart 2015 - 17:40:04
kolay demeyelim, zamanla pratiklik kazanıyor insan. :)

ogrkuruk.zip

bu dosyayi henüz C koduna çevirmedim ama anladığım kadarıyla C++ ile yazılmış

bir structure var bu yapı içinde öğrenciler için alınacak değişkenler ilişkilendiriliyor. Main dışında 3 adet fonksiyon daha var

struct struct_0 {
    float unk_0;
    float unk_1;
};


int SinifiYazdir(struct struct_0 * v_1, float v_2);
int Student(int a1);
int Student_1(int a1);

ardından öğrenciler için istenen veriler girilip, kuyruk ile işlemler yapılıyor.


Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 01 Nisan 2015 - 17:14:00
O uygulamaları yazarken daha yeni öğreniyordum. Şimdi bir kuyruk yapısı yazayım dersem en fazla 3-4 saatimi alıyor. Gerçekten de pratikleştikçe artıyor tecrübe.

Koda gelince C++ ile yazmıştım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Nisan 2015 - 00:14:39
Mesaji yeni gördüm gözümden kaçmış konu bu aralar sessiz kaldı.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 05 Nisan 2015 - 15:04:18
Alıntı yapılan: ReverserMesaji yeni gördüm gözümden kaçmış konu bu aralar sessiz kaldı.
Evet haklısınız bu aralar yeni bir tane yazıp yollayacağım bu seferkini biraz daha zor yapacam.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Nisan 2015 - 15:07:54
tamamdır, beklemedeyiz. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 05 Nisan 2015 - 15:10:33
Alıntı yapılan: Reversertamamdır, beklemedeyiz.
ogrkuyruk.zip'i çözdünüz mü?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Nisan 2015 - 15:12:33
çalışma mantığını çözdüm ama C ye çevirmedim henüz zira kuyruk yapısını ve pointerları analiz etmem biraz uzun sürecek.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 05 Nisan 2015 - 15:13:03
Alıntı yapılan: Reverserçalışma mantığını çözdüm ama C ye çevirmedim henüz zira kuyruk yapısını ve pointerları analiz etmem biraz uzun sürecek.
Tabi beklerim. 
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Mayıs 2015 - 23:05:44
Konunun canlanması için bir adet reverse_me paylaşıyorum.
İstenen: GDB kullanarak dosyayı analiz etmek, C ya da başka bir dile çevirmek.
İndirme bağlantısı: http://s4.dosya.tc/server2/mke6tw/reverse_me.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 03 Temmuz 2015 - 21:57:37
Bir denklem buldum, onu da sıkıntıdan bir programa çevirdim. Denklemi bulmaya çalışın :)

http://s3.dosya.tc/server3/pd7xpf/orthesaplama.zip.html (http://s3.dosya.tc/server3/pd7xpf/orthesaplama.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 03 Temmuz 2015 - 22:10:03
@betseg, programı 32bit olarak derleme imkanınız var mı acaba ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 03 Temmuz 2015 - 22:17:39
@Reverser http://www.dosya.tc/server2/f9zz8s/ort32.zip.html (http://www.dosya.tc/server2/f9zz8s/ort32.zip.html) umarım olmuştur.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 03 Temmuz 2015 - 22:21:23
olmamış ne yazık ki... http://www.cyberciti.biz/tips/compile-32bit-application-using-gcc-64-bit-linux.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 03 Temmuz 2015 - 22:44:28
Geç yanıt yüzünden özür dilerim. Umarım bu sefer olmuştur. gcc-multilib indirdim. http://www.dosya.tc/server2/q8un5b/ort32.zip.html (http://www.dosya.tc/server2/q8un5b/ort32.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ekremsenturk - 04 Temmuz 2015 - 00:12:20
Alıntı yapılan: betseg - 03 Temmuz 2015 - 21:57:37
Bir denklem buldum, onu da sıkıntıdan bir programa çevirdim. Denklemi bulmaya çalışın :)

http://s3.dosya.tc/server3/pd7xpf/orthesaplama.zip.html (http://s3.dosya.tc/server3/pd7xpf/orthesaplama.zip.html)

Girilen iki rakamın toplamını ikiye mi bölüyor?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 04 Temmuz 2015 - 00:55:09
@ekremsenturk değil :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 00:57:01
olmuş bu sefer :)


//Reversed source code - Reverser
//file: ort32 x86

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
float x,y;
double z;
printf("ORTALAMA HESAPLAMA\nBir sayi girin:");
scanf("%f",&x);
printf("Baska bir sayi girin:");
scanf("%f",&y);
z = sqrt(x * y + (y - x) / 2.0 * (y - x) / 2.0);
printf("Ortalamalari: %.1f\n",z);
return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 04 Temmuz 2015 - 01:13:34
Böyle aslında: sqrt( gb * gi + ( ( ( gi - gb ) / 2 * ( ( gi - gb ) / 2 ) ) ) )
gb=girilen birinci sayı
gi=girilen ikinci sayı
:)
y - 3 değil y - x. x yerine 3 yazdınız herhalde.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 04 Temmuz 2015 - 01:15:47

Neden bu kadar parantez var derseniz, parantez olmayınca gcc hata verdi. Nedenini bilmiyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 01:17:34
disassemble ederken değerleri d1,d2,d3 şeklinde kenara not alıyorum yanlış geçirmişim :) y - x olacak tabii ki.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 04 Temmuz 2015 - 01:19:28
Bu denklemi nasıl buldum, bilmiyorum. Bir anda aklıma geliverdi. Ortalama almak için oldukça uzun bir yöntem.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 01:21:36
olsun, güzel oldu konu canlansın :) var mı biraz daha ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: karboran - 04 Temmuz 2015 - 02:59:27
@Reverser c de bu olayın nasıl yapıldığına dair bizi biraz bilgilendirebilirsen iyi olur diye düşünüyorum ? Basit bi örneği anlatarak yapabilirsin mesela. Şahsım adına makbule geçer :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 03:42:23
@karboran, readelf, strace ve özellikle GDB kullanarak assembly okuyup, anladıktan sonra C diline çeviriyorum işin aslı bu. Önceki sayfalarda bir kaç örnek paylaşmıştım, sonrasında katılım pek olmadığı için paylaşımda bulunmadım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: karboran - 04 Temmuz 2015 - 11:44:02
@Reverser dikkatimden kaçmış demekki , bi bakayım ben paylaştıklarınıza . Teşekkürler :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 04 Temmuz 2015 - 12:43:20
@Reverser mayıstaki reverse_me ne acaba? time, srand, rand filan gördüm ama çözemedim :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 13:51:10
inan ben de bilmiyorum üzerinden uzun zaman geçmiş bir bakalım.

//Reversed source code - Reverser
//file: reverse_me x86

#include <stdio.h>
#include <stdlib.h>


int resolver(int param_0);

//0x0804849d  main
int main(int argc, char *argv[])
{
   srand(time(NULL));
   int number;
   printf("Reverser*");
   number = rand() % 10 + 1;
   resolver(number);
return 0;
}

//0x08048507  resolver
int resolver(int param_0)
{
   return (param_0 + 2) * (param_0 + 5);
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 04 Temmuz 2015 - 18:02:24
Amaç: can sıkıntısını gidermek
İstek: üsttekiyle aynı
http://s2.dosya.tc/server2/ah71p0/negatiftenpozitife.zip.html (http://s2.dosya.tc/server2/ah71p0/negatiftenpozitife.zip.html)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 04 Temmuz 2015 - 18:02:55

Not: ondalık basamak sorunu olmasın diye tamsayı girilmesini istedim programda.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 19:39:48
merhaba, 32bitlik versiyonda sıkıntı var sanırım. Execute ve disassemble edemedim. Her neyse, 64 bitlik olanı inceledim sonuç aşağıda.


//Reversed source code - Reverser
//file: negatiftenpozitife x64

#include <math.h>
#include <stdint.h>
#include <stdio.h>

int main(int argc, char *argv) {
    printf("NEGATIF SAYIYI POZITIFE CEVIRME\nNegatif bir tamsayi girin: ");
    float v0;
    scanf("%f",&v0);
    pow(v0,2);
    printf("Pozitif hali: %.0f",v0 * -v0 / v0);
}


Dip not: programda bug mevcut pozitif girersem negatif çıktı veriyor gözünüzden kaçtı sanırım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 04 Temmuz 2015 - 20:01:07
Üs alma filan olduğu için pozitif yazınca daha büyük bir pozitif sayı çıkar diye düşünmüştüm ama yanılmışım. Ayrıca öyle değildi :)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define k 2

int main(int argc, char *argv[])
{
    float g;
    printf("NEGATIF SAYIYI POZITIFE CEVIRME\nNegatif bir tamsayi girin: ");
    scanf("%f",&g);
    float s1 = pow(g,k);
    float s2 = s1 / g;
    float s3 = g - g - g;
    float s4 = s2 * s3 / g;
    printf("Pozitif hali: %.0f\n",s4);
    return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 04 Temmuz 2015 - 20:11:22
Tam olarak aynısı olamaz zaten. Çünkü benzer işlemler benzer assembly çıktılarını verebiliyor.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Temmuz 2015 - 15:38:56

basit bir işlem bu da benden olsun.

http://www.dosya.tc/server2/riaj1o/reverse_me_x.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 15:51:40
1-2 saat içinde bakıyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: thoron - 05 Temmuz 2015 - 16:34:12
İpucu:

20 satır. İki fonksiyon var. sadece <stdio.h> include edilmiş. Ufak bir hile yaptım. Bol şans :D

http://s2.dosya.tc/server2/uglrg8/a.zip.html


Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 16:39:53
Not: Hayatımda ikinci kez assembly'yi anlamaya çalışıyorum. Hatta ilk C programımı da 2 hafta önce yazdım.

main'de puts("Reverser*"); var.

Sanırım 8*12+1 yapılıyor _start_fake'de.

Başka da bir şey bilmiyorum. :D


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Temmuz 2015 - 16:40:25

Hatta bunları bildiğimden bile şüpheliyim :D


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Temmuz 2015 - 16:44:03

@thoron 42 :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Temmuz 2015 - 16:51:21
@betseg, hayır :D biraz daha uğraş bakalım ne çıkacak ?
@thoron, dosyayı 32 bit olarak paylaşabilir misiniz ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 16:52:18
5*12 de olabilir. Şimdi şeyettim.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Temmuz 2015 - 16:58:47

gcc-multilib indirip gcc a.c -m32 -o a32
yaparsanız 32 bit olur.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: thoron - 05 Temmuz 2015 - 17:31:10
@Reverser
Hm, o kod hazırda vardı. 32 bit için uğraşmam gerek biraz. Kısaca fonksiyonun döneceği yerin adresini arttırıp satır atlıyordu. Haliyle disas edince değerin değiştiğini görecektiniz ama fonksiyon o satıra dönmeyeceğinden o satır yokmuş gibi çıktı verecekti. Gıcık bi koddu :D Mimari değişince cortladı tabi. :)

@betseg
;D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 17:56:18
Buldum! 5*3+1
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Temmuz 2015 - 18:05:19
@betseg, doğru ! Kod haline çevirin şimdi :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 18:28:16
http://s2.dosya.tc/server2/69wwiy/asdfg.zip.html (http://s2.dosya.tc/server2/69wwiy/asdfg.zip.html)  İşsizlikte sınır tanımıyorum :D


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Temmuz 2015 - 18:28:42

Kod haline çevirin yazdığınızı görmemişim.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Temmuz 2015 - 18:43:49

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    puts("Reverser*");
    return _start_fake(5,3);
}
int _start_fake(int a, int b) {
    return a * b + 1;
}
İnternette biraz bakındım "C examples" yazdım, bunun gibileri derleyip çalıştırdım ve bunun doğru olduğuna karar verdim. Olmuş mu?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Temmuz 2015 - 19:12:10
@betseg, verdiğiniz programın kaynak kodu (muhtemelen siz, değişkenleri structure kullanmadan direkt main scope içinde tanımladınız. Ben structure kullanmayı sevdiğim için bu şekilde tanımladım.)

//Reversed source code - Reverser
//file asdfg32 x86

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct elemanlar { float x; float y; double z; } elemanlar;

int main(int argc, char *argv[])
{
elemanlar elemanlar;
printf("GEOMETRIK ORTALAMA HESAPLAMA\nBir sayi girin: ");
scanf("%f",&elemanlar.x);
printf("Baska bir sayi girin: ");
scanf("%f",&elemanlar.y);
pow((elemanlar.y - elemanlar.x) * 0.5, 2.0);
elemanlar.z = sqrt(elemanlar.x * elemanlar.y);
printf("Ortalamalari: %.5f\n",elemanlar.z);
return 0;
}

size verdiğim reverse_me'nin kaynak kodu ise şu şekilde:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   printf("Reverser*\n");
   int x;
   int y;
   x = 5;
   y = 3;
   _start_fake(x,y);
}
 


int _start_fake(int x, int y)
{
  return x * y + 1;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 19:24:19
   pow((elemanlar.y - elemanlar.x) * 0.5, 2.0);
   elemanlar.z = sqrt(elemanlar.x * elemanlar.y);
   printf("Ortalamalari: %.5f\n",elemanlar.z);
burayı uzatmıştım ama yanlış dosyayı vermişim :D

   pow((elemanlar.y - elemanlar.x) * 0.5, 2.0);
bunun sonuçla alakası olmadığını anlamışsınızdır.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Temmuz 2015 - 19:28:07
anladım ama bozmayayım dedim :D Diğerinide atabilirsiniz.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 19:39:16
http://www.dosya.tc/server2/vrxzff/asdfg.zip.html (http://www.dosya.tc/server2/vrxzff/asdfg.zip.html)
Buyurun efinim.
İlk paylaştığım denklem gerçekten bir anda aklıma geldi ama sonrakiler zorlama.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Temmuz 2015 - 20:04:39
biraz fazla değişken var ama olsun.

//Reversed source code - Reverser
//file asdfg32 x86

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct elemanlar
{
double unk0;
double unk1;
double unk2;
double unk3;
double unk4;
float unk6;
float unk7;
float unk8;
float unk9;
float unk10;
float unk11;
}elemanlar;


int main(int argc, char *argv[])
{
elemanlar elemanlar;
printf("GEOMETRİK ORTALAMA HESAPLAMA\nBir sayi girin: ");
scanf("%f",&elemanlar.unk7);
printf("Baska bir sayi girin: ");
scanf("%f",&elemanlar.unk6);
elemanlar.unk11 = pow((elemanlar.unk6 - elemanlar.unk7) * 0.5, 4.0);
elemanlar.unk10 = elemanlar.unk11 + elemanlar.unk11;
elemanlar.unk0 = sqrt(elemanlar.unk11);
elemanlar.unk1 = sqrt(elemanlar.unk0);
elemanlar.unk9 = elemanlar.unk1 + elemanlar.unk1 + elemanlar.unk7;
elemanlar.unk2 = sqrt(elemanlar.unk11);
elemanlar.unk3 = sqrt(elemanlar.unk2);
elemanlar.unk8 = elemanlar.unk3 + elemanlar.unk3 + elemanlar.unk7 + elemanlar.unk7 - elemanlar.unk6;
elemanlar.unk4 = sqrt(elemanlar.unk9 * elemanlar.unk8);
printf("Ortalamalari: %.5f\n", elemanlar.unk4);
return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 05 Temmuz 2015 - 20:14:32
#include <math.h>
#include <stdint.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
    printf("GEOMETRİK ORTALAMA HESAPLAMA\nBir sayi girin: ");
    float a; scanf("%f", &a);
    printf("Baska bir sayi girin: ");
    float b; scanf("%f", &b);
    float c; c = pow(0.5 * (b - a), 4);
    float d; d = c * 2;
    float y; y = (sqrt(sqrt(c)) * 2) + a;
    float z; z = (sqrt(sqrt(c)) * 2) + 2 * a - b;
    printf("Ortalamalari: %.5f\n", sqrt(y * z));
    return 0;
}

Böyleydi. İyice karıştırmışım :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 05 Temmuz 2015 - 20:17:40
@betseg, biraz. :)
Biraz mola verelim, gece güzel bir reverse_me paylaşacağım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 01:24:48
Gece olmadı mı? :)

Böyle bir şey yaptım: http://s2.dosya.tc/server2/0kztlt/a2.zip.html (http://s2.dosya.tc/server2/0kztlt/a2.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 06 Temmuz 2015 - 02:26:09
@betseg, işlerim vardı haledicem. :)
Onun dışında assembly okuyorum ama doğru olmayan şeyler var, kodlamanda hatalar var gibi.
Bu örnek için kod paylaşamayacağım, çünkü mantık operatörlerine bir anlam veremedim ayrıca mantık operatörleriyle birlikte bolca if kullanılmış ama else yok gibi.
Program hakkında (a2-86) detaylıca bilgi vereyim;
iki adet fonksiyon var
1-)0x0804847b main();
2-)0x080486aa ic();
3-)45 sayısı ic(); fonksiyonunu çağırıyor. 832414 sayısı ise, "doğru şifre" yazdırıyor.
4-)program içinde filtrelenilen diğer sayılar ise şu şekilde;

832414
sifre dogru!

832413
dokua

34961304
garir .eyler..P

42
42!!!

45
mrb

832413
dokua

34961304
garir .eyler..P

42
42!!!

45
mrb

34961304
garir .eyler..P

45
mrb

41
sonuc yok.





Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 02:40:37
Bozmuşum ya düzeltmeye çalışırken. dokua değil dokuz (evet, dokuz :D ), garir .eyler..P değil "garip seyler..." yapmaya çalışmıştım. 41 değil de, o sayılar harici her şeye sonuc yok yazıyor.
if-else:
       if (i == a + 2)               {}  // 832414
  else if (i == a + 1)               {}  // 832413
  else if (i == (c - b) * a + d * a) {}  // 34961304
  else if (i == d)                   {}  // 42
  else if (i == d + (g / 2))    {ic();}  // 45
  else                               {}  // diğer tüm sayılar
ic:
  printf("mrb\n");
  return 0;
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 06 Temmuz 2015 - 02:47:29
dokuz olduğunu tahmin etmiştim :D tam kaynak kodu görebilir miyim ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 02:52:12
#include <stdio.h>
#include <stdlib.h>

#define a 832412
#define b 888842
#define c 888842
#define d 42
#define g 6
#define h 5

float i;

int main(int argc, char const *argv[]) {
  char f = 'f';
  char s = 's';
  char o = 'o';
  char u = 'u';
  char n = '.';
  char z = 'a';
  char l = 'l';
  char q = 'g';
  char r = 'r';
  char w = 'd';
  char y = 'y';
  char x = 'i';

  printf("Reverse me pl0x\n");
  printf("But first, bir sayi yaz bakalim...\n");

  scanf("%f", &i);

       if (i == a + 2) {
    printf("%c%c%c%ce %c%c%c%c%c!\n", s, x, f, r, w, o, q, r, u);
  }
  else if (i == a + 1) {
    printf("%c%ck%c%c\n", w, o, u, z);
  }
  else if (i == (c - b) * a + d * a) {
    printf("%c%c%c%c%c %ceyler%c%c%c\n",q, z, r, x, r, n, n, n);
  }
  else if (i == d) {
    printf("42!!!\n");
  }
  else if (i == d + (g / 2)) {
    ic();
  }
  else {
    printf("%c%cn%cc y%ck%c\n", s, o, u, o, n, n, n);
  }
  return 0;
}

int ic(int argc, char const *argv[]) {
  printf("mrb\n");
  return 0;
}

Bayağı bir hile yaptım bence :D
g ve h ile bir şeyler yapacaktım ama olmadı, kaldırmayı da unutmuşum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 06 Temmuz 2015 - 03:01:01
paylaştığın her dosyadan keyif aldım açıkcası :D
Bu arada ic(); fonksiyonunu bu şekilde değil de,

int ic(int argc, char const *argv[])
{
//
}

bu şekilde yazarsan daha soğru olur zira ic(); fonksiyonu hiç argüman almıyor.
int ic()
{
//
}

hatırlatma: "int argc, char const *argv[]" sıklıkla main fonksiyon içindir ve konsoldan direkt argüman atamak için kullanılır.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 03:02:30
Bilmiyordum, sağ ol. Daha önce de dediğim gibi C'ye başlayalı 2 hafta oldu.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 06 Temmuz 2015 - 03:03:36

Bu arada bunu yazmak için 3 saat filan uğraştım :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: neynefes - 06 Temmuz 2015 - 03:33:20
Programlama olayına ilk fırsatta girmek istiyorum. Başlığı gördükçe imreniyorum :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 06 Temmuz 2015 - 12:26:02
@neynefes, sizi de aramızda görmek isteriz. :)
yeni dosyayı paylaşıyorum, bakalım neler çıkacak bu sefer ? :D
[1] http://s2.dosya.tc/server2/65xk65/reverse_meh.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 13:19:12
2 kere giriş istiyor bu, ama ilk girişe göre işlem yapıyor. Sorun ne?#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
  int s;
  puts("Reverse_meh*\nEnter an integer");
  scanf("%i\n", &s);
  pwn_it(s);
}
int pwn_it(int s){
  while (s >= 0) {
    printf("%d\n", s);
    s--;
  }
}

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 06 Temmuz 2015 - 15:33:42

#include <stdio.h>
#include <stdlib.h>

int pwn_it(int x);

int main(int argc, char *argv[])
{
   int x;
   printf("Reverse_meh*\nEnter an integer\n");
   scanf("%d",&x);
   pwn_it(x);
return 0;
}

int pwn_it(int x)
{
   for(x=x;x>=0;x--)
    {
      printf("%d\n",x);
    }
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 15:48:42
Sorunu buldum. Benim kodda   scanf("%i\n", &s);
var. \n 'yi kaldırınca çözülüyor.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 06 Temmuz 2015 - 15:55:43

Uçbirimle uğraşmayı, C ve CSS yazmayı çok seviyorum ben ya. Ama çoğu insan bunlar için beni garipsiyor :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 06 Temmuz 2015 - 17:11:16
iki haftaya göre hızlı gidiyor gibisin. :D
garipsenecek bir şey yok, herkesin ilgi alanı farklı ben de seviyorum uç birimi. Biraz geç cevap verdim kusura bakma.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 06 Temmuz 2015 - 17:25:44
HTML, CSS ve JS'yi 5 haftada öğrendim, biraz JS de bildiğimden C kolay geldi. while, if-else vb JS ve C'de aynı.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Temmuz 2015 - 03:39:13

http://www.dosya.tc/server2/oqhr0x/a3.zip.html (http://www.dosya.tc/server2/oqhr0x/a3.zip.html) çok küçük bir şey, amaç konu boş kalmasın.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 07 Temmuz 2015 - 03:57:44

//Reversed source code - Reverser
//file: a3-m32 x86

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
int integer, counter;
printf("Reverse me pl0x\nbut first, as always, write an integer");
scanf("%d",&integer);

for(counter = integer; counter >= 0; --counter)
{
if(counter == sqrt(counter))
{
printf("%d\n",integer);
}
else
{
//do_nothin
}
}
return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 07 Temmuz 2015 - 03:59:14
//do_nothin :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 07 Temmuz 2015 - 04:12:58
:) bu da benden olsun, bu sefer biraz uğraştıracak ama.
[1] http://s3.dosya.tc/server4/r51xrh/kick_me.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 07 Temmuz 2015 - 12:28:07
Alıntı YapThere is a hidden buffer.
Try to find me k ?

ama nerede bilmiyom :(

buldum: __init_array_end
Bu ne :D

Decompile yapmaya çalışırken Wikibooks Assembly sayfasına bakıyorum. Ama kick_me'dekibazı şeyler orada yok :D

Ayrıca, C'deki çoğu şey ibilmiyorum daha, sadece matematiksel işlemler, printf, scanf, if-else ve for gibi şeyler.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 07 Temmuz 2015 - 13:38:43
"There is a hidden buffer.
Try to find me k ?"
bufferın kendisi zaten :D Diğer fonksiyonları bekliyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 07 Temmuz 2015 - 13:50:08
k then
strings ile buldum bu yazıyı.

İçlerini anlamıyorum çünkü dediğim gibi Wikibooks'ta olmayan şeyler var flds gibi.
Ama main var, pwn_it var, pwn_it_a ve pwn_it_b var.
Bunu da info functions ile buldum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 07 Temmuz 2015 - 13:57:08
Floating point load olduğunu varsay. Bahsettiğin wiki sayfası burası mı ? https://en.wikipedia.org/wiki/X86_instruction_listings
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 07 Temmuz 2015 - 14:03:08
Yok bu https://en.wikibooks.org/wiki/X86_Assembly (https://en.wikibooks.org/wiki/X86_Assembly) ama o da güzelmiş.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Temmuz 2015 - 14:09:25

Ya hiç anlamıyorum sadece bakıyorum, Çinceye baksam daha çok şey anlarım.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 08 Temmuz 2015 - 01:18:08

O buffer nasıl oluyor? hexedit filan mı?

Ayrıca: http://www.dosya.tc/server2/si48u5/a4.zip.html (http://www.dosya.tc/server2/si48u5/a4.zip.html)
Hep yeni şeyler öğreniyorum :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 08 Temmuz 2015 - 15:30:51
hexedit değil, sadece bufferlanmış ama ekrana bastırılmamış karakterler. :)
son verdiğin dosyada bug vardı düzelttim.

//Reversed source code - Reverser
//file: a4-i386 x86

#include <stdio.h>
#include <stdlib.h>

//Prototype
int islem(void);

//Globals
float unk_0;
float unk_1;
float unk_2;

//0x080484cd  main
int main(int argc, char *argv[])
{
printf("1 ile 7 arasinda bir sayi girin");
scanf("%f",&unk_0);

if(unk_0 == 1.0)
{
printf("\x1B[31miyi secim\x1B[0m\n");
}
else if(unk_0 == 2.0)
{
printf("\x1B[32mguzel secim\x1B[0m\n");
}
else if(unk_0 == 3.0)
{
printf("\x1B[33mhos secim\x1B[0m\n");
}
else if(unk_0 == 4.0)
{
printf("\x1B[34mharika secim\x1B[0m\n");
}
else if(unk_0 == 5.0)
{
printf("\x1B[35mmuhtesem secim\x1B[0m\n");
}
else if(unk_0 == 6.0)
{
printf("\x1B[36mfevkalade secim\x1B[0m\n");
}
else if(unk_0 == 7.0)
{
printf("\x1B[37mkotu secim\x1B[0m\n");
}
else
{
printf("duzgun bisi yaz :D\n");
return -1; // --> Bug fix
}
  islem();
return 0;
}

//0x0804863a  islem
int islem(void)
{
printf("baska bi tane, ama buyuk olabilir");
scanf("%f",&unk_1);
if(unk_1 >= 0.0)
{
if(unk_1 <= 0.0)
{
printf("0");
}
else
{
unk_2 = unk_1 - 3.0;
printf("%.0f\n",unk_2);
}
}
else
{
unk_2 = unk_1 + 3.0;
printf("%.0f\n",unk_2);
}
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 08 Temmuz 2015 - 15:40:54
Böyleydi, bug nerede?
#include <stdio.h>
#include <stdlib.h>
#define normal   "\x1b[0m"
#define kirmizi  "\x1b[31m"
#define yesil    "\x1b[32m"
#define sari     "\x1b[33m"
#define mavi     "\x1b[34m"
#define mor      "\x1b[35m"
#define turkuaz  "\x1b[36m"
#define beyaz    "\x1b[37m"
int main (int argc, char const *argv[]) {
  float renk;
  printf("1 ile 7 arasinda bir sayi girin\n");
  scanf("%f", &renk);
  if (renk == 1) {
    printf(kirmizi "iyi secim" normal "\n");
  }
  else if (renk == 2) {
    printf(yesil "guzel secim" normal "\n");
  }
  else if (renk == 3) {
    printf(sari "hos secim" normal "\n");
  }
  else if (renk == 4) {
    printf(mavi "harika secim" normal "\n");
  }
  else if (renk == 5) {
    printf(mor "muhtesem secim" normal "\n");
  }
  else if (renk == 6) {
    printf(turkuaz "fevkalade secim" normal "\n");
  }
  else if (renk == 7) {
    printf(beyaz "kotu secim" normal "\n");
  }
  else {
    printf("duzgun bisi yaz :D\n");
  }
  islem();
}
int islem() {
  float isll;
  float islll;
  printf("baska bi tane, ama buyuk olabilir\n");
  scanf("%f", &isll);
  if (isll < 0) {
  islll = isll + 3;
  printf("%.0f\n", islll);
  }
  else if (isll > 0) {
  islll = isll - 3;
  printf("%.0f\n", islll);
  }
  else /*isll = 0)*/ {
    printf("0\n");
  }
  return 0;
}

Burada (http://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c) buldum.

Buffer'li kod nasil oluyor bi öyle atsana merak ettim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 08 Temmuz 2015 - 16:38:44

else
{
    printf("duzgun bisi yaz :D\n");
    return -1; //burada
}


7 den büyük bir sayı yazarsan direkt olarak işleme geçiyor. Bu nedenle -1'e döndürdüm.

örnek olarak;


#define MAX 256

int main()
{
char buffer[MAX] = "TEST"
}

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 08 Temmuz 2015 - 16:47:54
"yazsaydin" diye değiştirecektim, unuttum. Ama bu daha iyiymiş.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 09 Temmuz 2015 - 16:00:41

http://s2.dosya.tc/server2/h296er/a5.zip.html (http://s2.dosya.tc/server2/h296er/a5.zip.html)
Yenisi :D


47 dk sonra atsam mesaj tekrarı olmayacaktı galiba.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 10 Temmuz 2015 - 17:41:18
Hazir konu tekrar gundem de iken, ben de bir kod paylasayim.Bakalim kimler c yada diger dillere cevirecek.
file:reverse.asm

;BİTS 32
global main
extern putchar
extern getchar
main:
        lea     ecx, [esp+4H]
        and     esp, 0FFFFFFF0H
        push    dword [ecx-4H]
        push    ebp
        mov     ebp, esp
        push    ecx
        sub     esp, 20
        call    getchar
        mov     dword [ebp-0CH], eax
        cmp     dword [ebp-0CH], 10
        jz      kar
        call    main
kar:
        sub     esp, 12
        push    dword [ebp-0CH]
        call    putchar
        add     esp, 16
        nop
        mov     ecx, dword [ebp-4H]
        leave
        lea     esp, [ecx-4H]
        ret

64bit sistem de 32 bit derleme(gcc-multilib)

nasm -f elf32 -o reverse.asm.o reverse.asm
gcc -m32 reverse.asm.o
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 10 Temmuz 2015 - 18:57:19
aslında kar sadece putchar fonksiyonunu çağırıyor iki şekilde de olabilir ama 1. daha doğru.

1-)

//reversed source code - Reverser
//file: reverse.asm

#include <stdio.h>
#include <stdlib.h>

int main()
{
int str;
        str = getchar();
if(str != 10)
{
putchar(str);
main();
}
else
{
//
}
}


2-)

//reversed source code - Reverser
//file: reverse.asm

#include <stdio.h>
#include <stdlib.h>


int main()
{
int str;
        str = getchar();
if(str != 10)
{
kar(str);
main();
}
else
{
//
}
}

int kar(int str)
{
return putchar(str);
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 10 Temmuz 2015 - 19:18:21
Suan teldeyim ama paylasilan iki kod da yanlis.
Asm kodu derleyip. Calistirdiniz mi?
Ya da soyle izah edeyim. Programin amaci cozuldu mu? Yazilimi calistirinca nasil bir islem yapiyor. Zira sizin kodlar ayni islemi yapacagini sanmiyorum.
Not- Kodlar denenmemistir.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 10 Temmuz 2015 - 19:25:06
evet, derledim ilki sizin dosyasınız ikincisi reverse edilen.


reverser@reverser ~/Masaüstü $ ./reverse
dddddddddddd

dddddddddddd


reverser@reverser ~/Masaüstü $ ./reversedasm
ddddddddddd

ddddddddddd

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 10 Temmuz 2015 - 19:26:51
Programi calistirip test yazin oyle deneyiniz.
Farki goreceksiniz. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 10 Temmuz 2015 - 19:35:19
gözümden kaçmış, main fonksiyonu putchar'dan önce gelmeli. :D


//reversed source code - Reverser
//file: reverse.asm

#include <stdio.h>
#include <stdlib.h>

int main()
{
int str;
        str = getchar();
if(str != 10)
{
    main();
    putchar(str);
}
else
{
//
}
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 10 Temmuz 2015 - 19:44:41
Evet simdi olmus :)
c  kod.

#include <stdio.h>
void main(void)
{
int kar;
If ((kar=getchar())!=`\n`)
    main();
putchar(kar);
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 10 Temmuz 2015 - 23:44:55
Tamamdır hocam dediğim gibi gözümden kaçmış.  :))
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 11 Temmuz 2015 - 02:31:21
Beyler konunuzu dagıtmak ıstemem ama bı sorum olacak bu void main(void) ne anlama gelıyor?

Daha dogrusu parantez ıcındekı voıd ın ne ıse yaradıgını anlamadım
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 11 Temmuz 2015 - 02:52:07
@ShaoTT, void tipsiz demektir yani bir değişkenin (float,char,int) gibi tipi yoksa buna void denir.
örnek 1-) bu fonksiyon toplama işlemi yaptıktan sonra çağrıldığı yere toplamı döndürür.

int topla(int x, int y)
{
   return x + y;
}

örnek 2-) bu fonksiyon herhangi bir değer döndürmediği için, dönüş değerinin tipi void olur.

void topla(int x, int y)
{
  printf("%d",x+y);
}

Dip not: void, bir değişken tipi olarak da kullanılabilir. Son olarak, bu mesajım void konusunda attığım ilk ve son mesaj olsun lütfen. Kafanıza takılan başka bir şey varsa konu açıp sormanız daha iyi olacaktır.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 11 Temmuz 2015 - 03:02:01
Tesekkur ederim :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 13 Temmuz 2015 - 13:28:26
@Reverser özel mesajda dosya input-output filan demiştin. Al sana böyle bir şey :)

http://s2.dosya.tc/server2/0ig41w/a6.zip.html (http://s2.dosya.tc/server2/0ig41w/a6.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 13 Temmuz 2015 - 19:24:10
 Guzel uygulama sevdim ben bunu :)

#include <stdio.h>
int main(int argc, const char *argv)
{
  int yas;
  char *ad;
  int yil;
  FILE *dosya;
  int str;
  FILE *stream;
  char *filename;

  filename = "onys.txt";
  stream = fopen("onys.txt", "w");
  if (stream)
  {
    str = remove(filename);
    if (str)
    {
      printf("input dosyasi %s silinemedi (ustune yazilamiyor)\n", filename);
      return 1;
    }
    printf("input dosyasi %s silindi (ustune yazilabiliyor)\n", filename);
  }
  fclose(stream);
  dosya = fopen(filename, "w");
  puts("Once adinizi sonra yasinizi girin:");
  scanf("%s %d", &ad, &yas);
  yil = yas + 10;
  fprintf(dosya, "%s, %d yasinda, 10 yil sonra %d olacak", &ad, yas, yil);
  fclose(dosya);
  printf("\n10 yil sonra %d yasinda olacaksin\nonys.txt'ye bakmayi unutma\n", yil);
  return 0;
}

cikti

./file
input dosyasi onys.txt silindi (ustune yazilabiliyor)
Once adinizi sonra yasinizi girin:
BenimAdimCokUzunCekirdekCitlerim
23233331122222222222222222222222222222
Segmentation fault (core dumped)
:)


./file
input dosyasi onys.txt silindi (ustune yazilabiliyor)
Once adinizi sonra yasinizi girin:
Efe 30
10 yil sonra 40 yasinda olacaksin
onys.txt'ye bakmayi unutma
$ cat onys.txt
Efe, 30 yasinda, 10 yil sonra 40 olacak


./file
input dosyasi onys.txt silindi (ustune yazilabiliyor)
Once adinizi sonra yasinizi girin:
efe ler

10 yil sonra 12 yasinda olacaksin
onys.txt'ye bakmayi unutma
Cat onys.txt
Efe, 2 yasinda, 10 yil sonra 12 olacak
:)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Temmuz 2015 - 19:53:33
Efe ler
10 yıl sonra 12 yaşında  ;D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 13 Temmuz 2015 - 21:39:56
:D
Şu an evde değilim eve gelince bendeki kodu yazarım.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 13 Temmuz 2015 - 22:09:12

Biliyorum çok noob bi kod :(

#include <stdio.h>
#include <stdlib.h>
int main() {
  //ilk tanımlamalar
  int sil;
  char *girisDosyaAdi = "onys.txt";
  char ad[10];
  int yas;
  //bitti
  FILE *dosya1;
  dosya1 = fopen(girisDosyaAdi, "w");
  //dosya boş mu bakalım
  if (dosya1 != NULL) {
    sil = remove(girisDosyaAdi);
    if (sil == 0) {
      //boş değilse siliyor
      printf("input dosyasi %s silindi (ustune yazilabiliyor)\n", girisDosyaAdi);
    }
    else {
      //silemezse
      printf("input dosyasi %s silinemedi (ustune yazilamiyor)\n", girisDosyaAdi);
      return EXIT_FAILURE;
    }
  }
  else {
    //do nothin
  }
  fclose(dosya1);
  //dosyaya adı, yaşı ve 10 yıl sonraki yaşı yaz
  FILE *dosya2;
  dosya2 = fopen(girisDosyaAdi, "w");
  printf("Once adinizi sonra yasinizi girin:\n");
  scanf("%s", &ad);
  scanf("\n%d", &yas);
  int onys = yas + 10;
  fprintf(dosya2, "%s, %d yasinda, 10 yil sonra %d olacak", ad, yas, onys);
  fclose(dosya2);
  printf("\n10 yil sonra %d yasinda olacaksin\nonys.txt'ye bakmayi unutma\n", onys);
  return 0;
}




Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 14 Temmuz 2015 - 09:25:10

(Biliyorum mesaj tekrarı olacak)
Neden dosya boş mu diye kontrol etmeden sildi? Tamam, böyle daha iyi, bug programı düzeltti ama yanlış bir şey mi yaptım?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 15 Temmuz 2015 - 20:08:04
Basit bir tane gelsin..
File:  reverse
Bits:  64
http://s3.dosya.tc/server4/8w8vli/reverse_me.zip.html (http://s3.dosya.tc/server4/8w8vli/reverse_me.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 15 Temmuz 2015 - 21:32:39
hocam merhaba şöyle bir şey çıkardım


/*
Reversed source code - Reverse
file: reverse_me

entry point is: 0x4000b0

Dump of assembler code from 0x4000b0 to 0x400114:
=> 0x00000000004000b0 <_start+0>: mov    $0xe,%edx
   0x00000000004000b5 <_start+5>: mov    $0x4000d2,%esi
   0x00000000004000ba <_start+10>: mov    $0x1,%edi
   0x00000000004000bf <_start+15>: mov    $0x1,%eax
   0x00000000004000c4 <_start+20>: syscall
   0x00000000004000c6 <_start+22>: mov    $0x0,%edi
   0x00000000004000cb <_start+27>: mov    $0x3c,%eax
   0x00000000004000d0 <_start+32>: syscall

(gdb) x/s 0x4000d2
0x4000d2: "Tersine kodla beni "
(gdb)


01 sys_write
03 sys_close
*/


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/syscall.h>

#define MAX 256

int main(int argc, char *argv)
{
  char buffer[MAX] = "Tersine kodla beni ";
  write(0,buffer,14);
  exit(0);
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 15 Temmuz 2015 - 22:17:18
Merhaba @Reverser,  tebrik ederim. Zaten yazilim da herhangi bir amac yoktu.Sadece biraz kafa karistirmak istedim.
C kod.

#include <sys/syscall.h>
#include <unistd.h>

int main(void)
{
syscall(SYS_write, 1, "Tersine kodla ", 14);

return 0;
}

Asm'ye cevrilmis kod.

#include <asm/unistd.h>
#include <syscall.h>
.file               "reverse.S"
.section         .rodata
text:
.string"Tersine kodla "
.text
.globl            _start
.type            _start, @function
_start:
                   ##   yaz bakalim
                  movl    $14, %edx
                  movl    $text, %esi
                  movl    $1, %edi
                  movl    $SYS_write, %eax
                  syscall

                  ## bye bye de abiye ;)
                  movl    $0, %edi
                  movl    $SYS_exit, %eax
                  syscall

.size           _start, .-_start
                 .section.note.GNU-stack,"",@progbits


Zaten yazilim strace ile incelendiginde bile sadece yazma islemi yaptigi gorulebilirdi.

strace -f ./reverse   
execve("./reverse", ["./reverse"], [/* 119 vars */]) = 0
write(1, "Tersine kodla ", 14Tersine kodla )          = 14
_exit(0)                                = ?
+++ exited with 0 +++

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 15 Temmuz 2015 - 22:22:41
Hocam strace ile write göremedim neden bilmiyorum syscall numaralarından buldum o nedenle. Dosya ve cevabınız için teşekkür ederim. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 15 Temmuz 2015 - 22:27:49
Rica ederim.Baska yazilimlar ile gorusmek dilegiyle.
Iyi forumlar...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 15 Temmuz 2015 - 22:57:54
Alıntı yapılan: betsegNeden dosya boş mu diye kontrol etmeden sildi? Tamam, böyle daha iyi, bug programı düzeltti ama yanlış bir şey mi yaptım?
Hala merak ediyorum :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 16 Temmuz 2015 - 01:16:19
@betseg, tam olarak ne yapmak istediğini anlayamamış olduğumdan cevap verememiştim sana.
şöyle bir script yazdım umarım açıklayıcı ve öğretici olur
1-)test dosyası read modunda açılır
2-)dosya var mı yok mu bakılır.
3-)dosya varsa, fseek kullanılarak dosyanın tam olarak geçerli boyut file_size değişkenine atanır
4-)atanan değişken 0 ise gerekli işlem, 0 dan büyükse diğer bir gerekli işlem yapılır.


/*
File checking  with actual file size
Reverser
*/

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
  int file_size;
  FILE *file_pointer;
  file_pointer = fopen("test","r");
  if (file_pointer == NULL)
  {
    //LOL
    printf("There is no file.\n");
    return -1;
  }
  fseek(file_pointer, 0, SEEK_END);
  file_size = ftell(file_pointer);
  fseek(file_pointer, 0, SEEK_SET);
  printf("file size is: %d byte(s)\n",file_size);

  if(file_size == 0)
  {
    printf("file is empty or 0 byte(s)\n");
    //do sumthin'
  }
  else
  {
    printf("file is not empty or greater then 0 byte(s)\n");
    //do_sumthin'
  }
return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 16 Temmuz 2015 - 01:17:48
Her yazdığın kodda gülüyorum ya :D
do_sumthin' nedir :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 16 Temmuz 2015 - 01:21:09
azıcık neşelensin buralar :D aklına takılan bir şey olursa özelden sorarsın.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 16 Temmuz 2015 - 01:40:51
@betseg;
Sorunuza su cevap verilebilir.
w flag sadece yazma modu ve dosya olsun veya olmasin yeniden olusturulur demek kisaca yeterlidir sanirim.Yeniden olusan bir dosya da da  bos musun, dolu musun demek biraz garip sanirsam.

NOT-> Acayip bir de durum var, baslik altinda cevap verip vermeme arasinda kaliyorum.Aklim cevap vermememi.Konunun disina cikmamak icin.Bir taraftan da konu ile ilgili duruyor gibi.Uyari alabiliriz. O yuzden kisaca cevap yazdim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 16 Temmuz 2015 - 01:46:46
@817c0d3r, aynen öyle hocam az önce access mode hakkında bilgi verdim arkadaşa. :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 16 Temmuz 2015 - 01:51:54
O zaman asil konu basligimiza  donebiliriz :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 16 Temmuz 2015 - 01:55:43
Elimizde sopa ile beklemiyoruz yahu :)
Başlık zaten çok farklı bir başlık, ben bakınırken zevk alıyorum. Hani programlama forumu değiliz ancak hep söylemişimdir, bu konuların da konuşulması kendi adıma hoşuma gidiyor. O nedenle sizler başlığın dağılmasından rahatsız olmadığınız sürece bizler için bence sorun yok.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ata1 - 16 Temmuz 2015 - 02:04:27
sanmayın katılmıyorsak izlemiyoruz biz de kıyıdan kıyıdan öğreniyoruz  ;D konunun takipcisiyim
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 16 Temmuz 2015 - 02:08:36
Estafurullah ya @heartsmagic.Oyle birsey demek istemedim de :)
Yazmaya baslayinca kendimi durduramiyorum.Bir de cevap verdikce farkli sorular geliyor.
O an da aklima konu disi  oldugu ya da olabilirligi hic gelmiyor.Direk sorulan sorulara odaklaninca boyle durumlar olusuyor.
O yuzden konu disina cikmamaya ozen gosteriyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 16 Temmuz 2015 - 02:22:11
Takılıyorum ben de zaten, ciddi olarak yazmadım yani o kısmı :) Kısacası başlık tamamen sizin tasarrufunuzda.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 16 Temmuz 2015 - 02:42:54
Bizleri (daha dogrusu beni) aydinlattiginiz icin tesekkur ederim @heartsmagic. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 16 Temmuz 2015 - 02:45:15
Ben de bu güzel katkılarınız için teşekkür ederim hepinize :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 16 Temmuz 2015 - 02:57:10
@heartsmagic, yorumunuz için teşekkürler biz bu işle uğraşırken çok eğleniyoruz keşke katılım daha çok olsa...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 16 Temmuz 2015 - 03:08:42
Açıkçası bu kadar katılımın olması bile şaşırtıyor beni, tabi daha fazla olmasını ben de isterim. Hani bir programlama forumu olsak daha fazla katılım olması gerekir ama bu forum için bence iyi bile :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 16 Temmuz 2015 - 03:15:20
Ben sadece öğrenmek için katılıyorum konuya :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 16 Temmuz 2015 - 04:39:18

@betseg sizin kodlar da  fazlaliklari atarsak,  soyle birsey ortaya cikar. :)

#include <stdio.h>
//#include <stdlib.h>
int main() {

  int yas,yil;

  char ad[20];


  FILE *fp;
  if ((fp = fopen("onys.txt", "w")) == NULL) {


      printf("Dosya acilamadi!\n")
    Return 1; //exit(1);
}






  printf("Once adinizi sonra yasinizi girin:\n");
         scanf("%s %d", &ad, &yas);

  yil = yas + 10;
fprintf(fp, "%s, %d yasinda, 10 yil sonra %d olacak", ad, yas, yil)

  printf("\n10 yil sonra %d yasinda olacaksin\nonys.txt'ye bakmayi unutma\n",yil);
  fclose(fp);
  return 0;
}

Cok mu? Kisaldi kodlar ne..! :)
NOT~ Telden yazdim.Duzenlemek gerekebilir.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 16 Temmuz 2015 - 13:20:21
bu sefer biraz zorlayacak gibi  ::)
http://www.dosya.tc/server2/cyuph4/reverse_it.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 17 Temmuz 2015 - 05:01:10
Süper bi dil buldum. Adı LOLCODE :D
HAI 1.3                                        BTW başlıyo main gibi bişi int main(){
  CAN HAS STDIO?                               BTW #include <stdio.h> ama mainin içinde
  VISIBLE "mrb:)LOLCODE ornegi"                BTW printf("mrb\nLOLCODE ornegi");
  I HAS A giris                                BTW int giris;
  GIMMEH giris                                 BTW scanf("%d", &giris);
  I HAS A sonuc, sonuc R DIFF OF giris AN 1    BTW int sonuc; sonuc = giris - 1;
  VISIBLE sonuc                                BTW printf("%d", sonuc);
KTHXBYE                                        BTW }



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 17 Temmuz 2015 - 05:02:52

If-Else, For döngüleri basit matematik filan da var :D

https://github.com/justinmeza/lolcode-spec/blob/master/v1.2/lolcode-spec-v1.2.md (https://github.com/justinmeza/lolcode-spec/blob/master/v1.2/lolcode-spec-v1.2.md)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 28 Temmuz 2015 - 15:11:16
a6-v2

http://s2.dosya.tc/server2/k7ep89/a6-asdfg.zip.html (http://s2.dosya.tc/server2/k7ep89/a6-asdfg.zip.html)



Bir şey fark ettim, 8'den beri her sayfadaki ilk post benim :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 28 Temmuz 2015 - 16:58:10

//Reversed source code - Reverser
//file: a6-asdfg32 x86

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int yas;
  char ad[256];
  int toplam;
  FILE *fptr;
  if(argc != 4) // 1,2,3 ? -> BUG FIX
  {
printf("hehe\n");
sleep(1u);
     printf("Usage: %s -a ad yas\n",argv[0]); // a6 ? -> argv[0] BUG FIX
  }
  else
  {
if(!strcmp(argv[1],"-a") || !strcmp(argv[1],"--AdVeYasGir10YilSOnrasiniHesapla"))
{
fptr = fopen("onys.txt","w");
sscanf(argv[2],"%s",&ad); // ad , digit ya da char kontrol yok ?
sscanf(argv[3],"%d",&yas); // yaş, digit ya da char kontrol yok ?
toplam = yas + 10;
fprintf(fptr, "%s , %d yasinda, 10 yil sonra %d olacak", ad, yas, yas + 10);
fclose(fptr);
printf("\n10 yil sonra %d yasinda olacaksin\nonys.txt'ye bakmayi unutma\n", toplam);

}
else
{
printf("olmadi be... \"%s -a ad yas\" dene",argv[0]); // --> BUG FIX
return 1;
}
}
return 0;
}


kodundaki küçük hataları düzelttim. Ama hala büyük bir hata var, programa "yaş + yaş" ya da "ad + ad" girildiğinde sapıtıyor. bunu çözmek için, bir dizi hazırlarsın daha sonra dizinin ilk elemanını alırsın ve ilk elemanı digit mi yoksa char mı şeklinde sorgulayan bir fonksiyon yaparsın istenene göre -1 döndürürsün ya da programı sonlandırırsın. Aşağıdaki kod fikir verecektir.


if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
    /*Alfabe*/
}


if(ch>='0' && ch<='9')
{
    /*Rakam*/
}

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 28 Temmuz 2015 - 17:16:36
Bende yaş + yaş veya ad + ad girince "olmadi be... "./a6 -a ad yas" dene" diyor.

Sadece "./a6-asdfg" yapılmışsa hehe ve kullanım yazdırdım, başka bişiyse kullanım yazdırdım. 4 değilse olarak değil yani.

Bu arada "kullanım: a6" nasıl oldu, hiçbir fikrim yok :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 28 Temmuz 2015 - 17:38:12
çözümü de paylaşalım o halde. :)


/*
   Bug fix for reversed source code.
   
   -Reverser.
*/

#include <stdio.h>
#include <stdlib.h>

#define MAX 256

int check(int ch);

int main(int argc, char *argv[])
{
int i;
char string[MAX];
scanf("%s",string);

for(i=0; string[i] != '\0'; i++)
{
}
printf("first element is: %c\n",string[0]);
check(string[0]);
return 0;
}

int check(int ch)
{
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z'))
{
printf("Char detected.\n");
}
else if(ch>='0' && ch<='9')
{
printf("Digit detected.\n");
}
else
{
printf("Unknown.\n");
}
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 28 Temmuz 2015 - 19:00:06
Merhaba arkadaslar;
Bir tane tam egleneceginiz bir krekle_me :) haziradim.
Simdiden kolay gelsin. :)
http://s2.dosya.tc/server2/8dgyen/krekle_me.zip.html (http://s2.dosya.tc/server2/8dgyen/krekle_me.zip.html)

Not=> Ev de yoksak eger,anahtar daima evin yakinindadir.Yeter ki, bakinca gormesini bil :)))
Cin atasozu :)))
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 28 Temmuz 2015 - 20:05:57
UPX, Unpack ettim.
Entry point: 0x804923d
Main function: 0x8048960
string "cevap!!": 0x8169b28

ve şifreyi buldum: Cevap!!

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 28 Temmuz 2015 - 20:13:57
Tebrikler :))
Basta gozunuz korkmus olabilir ama zaten amac kafa karistirmak. :)
upx oldugu string aramasi gorulebilir.
Gorunmedigi durumlarda
yara adli yazilim kullanailabilir.

└> wolf@Security -> yara -s -m -g  yar_saclarin_rule_rule.yar krekle_me
UPX [] [] krekle_me
0x8f236:$noep3: 01 DB 75 07 8B 1E 83 EE FC 11 DB 8A 07 72 EB B8 01 00 00 00 01 DB
0x8f230:$noep5: 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 28 Temmuz 2015 - 20:20:37
Unpack ettikten sonra strings çıktısı bayağı bir kafamı karıştırdı daha sonra fonksiyona bakınca anladım.
Zaman ayırıp hazırladığınız ve paylaştığınız için teşekkürler hocam. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 28 Temmuz 2015 - 20:23:23
Rica ederim. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 30 Temmuz 2015 - 14:23:25
Özellikle static linklenmiş olması nedeniyle, son örnekte hayli zorlandım. Reverser mümkünse 0x8169b28 adresine nasıl ulaştığını açıklayabilir misin?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 30 Temmuz 2015 - 16:53:59
@oasln, şu şekilde:
b * 0x8048960 |__-> 2. break point

(gdb) x/s 0x8169b28
0x8169b28: "Cevap!!"



Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 30 Temmuz 2015 - 21:05:44
Tamam benim anlamadığım, 0x8169b28 adresini nerden buldun.

Ben de main (0x8048960) breakpointinden sonra nexti ile bir süre ilerlemeyi denedim ama bir türlü 0x8048960 adresinin kullanıldığı instructiona ulaşamadım.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 30 Temmuz 2015 - 21:33:38
herşeyden önce UPX decompress yapmalısın.

b * 0x804923d
run
x/35i $pc
b * 0x8048960
continue
x/35i $pc
x/s 0x8169b28
0x8169b28: "Cevap!!"



Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 31 Temmuz 2015 - 01:13:00
Bu sefer ipucu vermeyeyim :)
s6.dosya.tc/server/ocw1bt/crackme.zip.html (http://s6.dosya.tc/server/ocw1bt/crackme.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Temmuz 2015 - 01:51:56
Yoda's protector olabilir mi ? ;D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 31 Temmuz 2015 - 01:55:36
O da nereden cikti ya :)
Yado mado pack yok :)
Dogru sifre de gulen surat yanlis sifre de uzgun surat var.
objdump -s -j .rodata crack_file
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Temmuz 2015 - 03:03:50
Zip formatı görünce direkt aklıma o geldi. Gerçi sadece windows executableleri içindi yanlış hatırlamıyorsam.
Şifreyi buldum:
!!erfiS
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 31 Temmuz 2015 - 11:04:30
Tamamdır harikasın. Keşke sadece cevabı yazmak yerine bu şekilde nasıl çözdüğünüzü de yazsanız benim gibiler için çok daha yararlı olacaktır :)

Alıntı yapılan: Reverser - 30 Temmuz 2015 - 21:33:38
herşeyden önce UPX decompress yapmalısın.

b * 0x804923d
run
x/35i $pc
b * 0x8048960
continue
x/35i $pc
x/s 0x8169b28
0x8169b28: "Cevap!!"
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 31 Temmuz 2015 - 21:32:40
@Reverser yine tebrikler :)
Zip olduguna bakmayin.Biraz tuhaf olacak ama ziplemek zor geldi.Ben de siteyi yanilmak icin boyle bir yola basvurdum.Mahlum zip olmadan kabul etmiyor kendileri. :)
Kisaca zip olmasi onemli degildi.
$ ./crackme.zip
Seklinde calistirabilirsiniz yani sorun yoktu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Temmuz 2015 - 21:39:58
dosyayı 2 kez indirmek zorunda kaldım corupted gözüktüğü için  ;D belirttiğiniz şekilde inceledim arşivi.
Tekrar teşekkür ederim hocam paylaştığınız için.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 31 Temmuz 2015 - 21:48:36
Rica ederim.
Sizde kisaltma kullaniyorsunuz herhalde benim gibi  :)
(corrupted)
Biz de kisaltma kullaniyoruz bazen.
Anlamadigimiz   foksiyonlara kisaca fucktion diyoruz. :) Lanet fonksiyon diye duzelteyim.
Zip bozuk gorundugu icin bu  kadar fazla indirilmis(10).Bende diyorum, bu kadar ilgi ne zaman vardi ;)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 31 Temmuz 2015 - 22:14:09
Fucktion iyiymiş. ;D
Kısaltma kullanıyorum ama o sözcüğün durumu biraz farklı. Biz ona mobil klavyemin azizliği diyelim. ;D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 31 Temmuz 2015 - 22:15:36
Azizim;
O azizlik ben de var :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 01 Ağustos 2015 - 11:48:00
Alıntı yapılan: 817c0d3r - 31 Temmuz 2015 - 21:32:40
@Reverser yine tebrikler :)
Zip olduguna bakmayin.Biraz tuhaf olacak ama ziplemek zor geldi.Ben de siteyi yanilmak icin boyle bir yola basvurdum.Mahlum zip olmadan kabul etmiyor kendileri. :)
Kisaca zip olmasi onemli degildi.
$ ./crackme.zip
Seklinde calistirabilirsiniz yani sorun yoktu.

Site açısından, dosyanın zip olup olmadığını sadece uzantısına bakarak anlama da iyiymis :-)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ağustos 2015 - 16:52:11
@817c0d3r, hocam şimdi aklıma geldi. Bu yöntem site için güvenlik açığı oluşturuyor o zaman. Gerçi link uzantısı anladığım kadarıyla random olarak oluşturuluyor ama yinede sunucu üzerinde kod çalıştırmak ya da interpreter ile script çalıştırmak mümkün olabilir. Bildirilmeli midir bu durum site yetkililerine ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 01 Ağustos 2015 - 17:51:40
zip'i açınca böyle göründüğü için "noluyo" dedim bi an :D ama sonra direkt zip'in çalıştırıldığını görünce çok şaşırdım :D
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FqllQNW.png&hash=a985b651b1e986dfbb9a8e3df2d6132e2c8c0141) (http://hizliresim.com/qllQNW)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ağustos 2015 - 18:05:20
bir önceki mesajıma [1] https://forum.ubuntu-tr.net/index.php?topic=45477.msg552701#msg552701 istinaden ve konumuzun yapısı bakımından bu soruna yönelik çözüm önerisi sunuyorum:

(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FMyyB41.png&hash=e9ec76035c515abdc84b414abee3d9e976c48445)
1-) Dosyanın uzantısı değil de, file header'ı içinde bulunan magic number kontrol edilmeli. Bu şekilde dosya uzantısı hakkında daha sağlıklı sonuç alınır.
yazdığım program ELF header'ı içinde bulunan Magic number'ı kontrol eder. Site sahibi kişi ve ya kişiler bu kodu kolaylıkla PHP'ye port edebilirler.


/*
   ELF Magic Checker
   Reverser 
   1.8.2015
   
*/

#include <stdio.h>
#include <stdlib.h>

typedef struct {
char signature[16];
} HEADER;

//ELF magic number
char correct_sig[16] = {
   0x7F,  // .
   0x45,  // E
   0x4c,  // L   
   0x46,  // F
   0x02,
   0x01,
   0x01,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00   
};

//ELF Header
struct {
   char signature[16];
   
} header = {
    {
     0x7F, 0x45, 0x4C, 0x46, 0x02, 0x01, 0x01,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00
}
};


int main(int argc, char *argv)
{
FILE *infile;
int loop0;
int total_size;
HEADER header;
infile = fopen("crackme.zip", "r");
if (infile == NULL)
{
printf("Dosya acilmadi.\n");
return -1;
}
fseek(infile, 0, SEEK_END);
total_size = ftell(infile);
fseek(infile, 0, SEEK_SET);

if(total_size < 0)
{
printf("Dosya boyutu alinamadi.\n");
return -1;
}

if (fread(&header, sizeof(HEADER), 1, infile) < 0)
{
printf("Dosya basligi okunamadi. \n");
return -1;
}
for (loop0 = 0; loop0 < sizeof(correct_sig); loop0++)
{
if (header.signature[loop0] != correct_sig[loop0])
{
printf("Dosya .ELF degil.\n");
return -1;
}
else
{
printf("Dosya .ELF \n");
return 0;
}
}
}

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 01 Ağustos 2015 - 18:53:38
Tam dediginizi yapan zaten libmagic(3) (http://manpages.ubuntu.com/manpages/hardy/man3/libmagic.3.html) ve komut tabanlı arabirimi file(1) (http://manpages.ubuntu.com/manpages/hardy/en/man1/file.1.html) var zaten. PHP içerisinde de builtin olarak mevcut (https://secure.php.net/manual/en/book.fileinfo.php).

$ file crackme.zip
crackme.zip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ağustos 2015 - 18:56:31
olduğunu biliyorum ;)
readelf'de okuyor sıkıntı yok o konuda.
Ben kendi yazdığım kod ile çözüm önerisinde bulunup, açıklama yaptım. Kodu dikkatle incelersen görürüsün ne yapmak istediğimi.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 01 Ağustos 2015 - 19:00:56
Kod dosyanın zip olup olmadığından ziyade, ELF olup olmadığına bakıyor. Bir dosyanın zip olup olmadığını, ELF olup olmamasına bakarak mı anlarsınız :) Sizin kodu kullansalar bu sefer de ELF harici tüm zip uzantılı dosyaları kabul ederler.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ağustos 2015 - 19:05:06
Amacın nedir anlamadım? Sadece elf uzantısı üzerinden konuşuyorum. Çok şükür algoritma kurma ve anlama becerim var.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 01 Ağustos 2015 - 19:43:04
Bir amacım yok. Sadece önerdiğiniz çözümün aslında problemi çözmediğini belirtmek istedim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ağustos 2015 - 19:55:32
Benim de belirtmek istediğim şu;
Bu açıklama sadece güvenlik açığı oluşturduğunu düşündüğüm bu durum için geçerli.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 01 Ağustos 2015 - 20:07:17
Tamam kusura bakmayın eğer yanlış anlaşıldıysam. Eğer 817c0d3r dışında birinden örnek kabul ediyorsanız ben de bir crackme.zip hazırlamak isterim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Ağustos 2015 - 20:30:19
kusurluk bir durum yok. Ben durumu iyi ifade edemedim muhtemelen, o nedenle iletişimde kopukluk oldu. Elbette sen de herkes gibi dosya paylaşabilirsin fakat paylaşacağın dosyayı kendi adıma bugün inceleyemeyeceğim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 01 Ağustos 2015 - 20:35:50
Ben bir tane daha ekleyim.
@Reverser, siz cozerseniz ozelden cevabi yazarsiniz. Biraz diger arkadaslara firsat verelim.
1 hafta kadar bekleyelim.Cozen olmazsa cevabi yazarsiniz.
s6.dosya.tc/server/714pyc/killme.zip.html (http://s6.dosya.tc/server/714pyc/killme.zip.html)
@Reverser, bu arada sitenin bu kadar kolay bir acik birakacagini sanmiyorum ama kesin konusmamak lazim. :)
Musait bir zaman da bakmak lazim.
Ilgilenen arkadaslara simdiden kolay gelsin.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 01 Ağustos 2015 - 21:03:31
strings ile sifre.txt gördüm ama başka bir şey yok :D 600 kb naptın :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 01 Ağustos 2015 - 21:19:21
@betseg, Biraz sayi, biraz harf aldim.
Sonra evirdim, cevirdim :) bu hale geldi.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 02 Ağustos 2015 - 01:30:41
Alıntı yapılan: 817c0d3r - 01 Ağustos 2015 - 20:35:50
Ben bir tane daha ekleyim.
@Reverser, siz cozerseniz ozelden cevabi yazarsiniz. Biraz diger arkadaslara firsat verelim.
1 hafta kadar bekleyelim.Cozen olmazsa cevabi yazarsiniz.
s6.dosya.tc/server/714pyc/killme.zip.html (http://s6.dosya.tc/server/714pyc/killme.zip.html)

Özel mesaj atmayı bulamadım sitede (belki mesaj sayımdan dolayı bende aktif değil), ben de ilk defa bir örneği çözdüğüm için kendimi bayrak etme gereği duydum, bu yeni kuralı daha sonra uygulayalım :-)

$ xxd sifre.txt
00000000: 3533 6372 3337 6631 6167                 53cr37f1ag
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 02 Ağustos 2015 - 05:44:48
Tebrikler @oasln.
Cozum yonteminizi  aciklayabilirsiniz.
Vidyo olursa, iyi olur.Cekirdeklerimi alir ben de izlerim. :) Severim vidyo izlemesini.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 02 Ağustos 2015 - 16:59:26
ooo vidyo severiz mısır patlatayım bende :P
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 02 Ağustos 2015 - 18:08:13
Takip ediyorum ama bisey anlamiyorum video olursa belki bbirazcik anlarim :) [emoji14]
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 02 Ağustos 2015 - 18:24:53
@oasln, hocam uzun zamandır video göremedik.Ônceleri ne güzel video da paylaşılıyordu.Güzel oluyordu.Şimdi sadece çòzüm yada cevap.
Gerçekten de bir video iyi olurdu.Eğer zaman ayırıp bìr vîdeo yùklerseniz cok makbule geçer hocam.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 02 Ağustos 2015 - 20:52:58
Tamam hazırlıyorum bir tane daha önce hiç video deneyimim yok ama :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 02 Ağustos 2015 - 21:35:32
@oasln, hocam ben mi? Yanlış bir şey yapıyorum.Anlamadım.
Sizin verdíğiniz kelimeyi, şífre.txt yazıyorum ama yìne bir şey olmamakta.
Yani ben mi? Yanliş anladım programı, bılemedim. :(
Doğru kelimeyí, şífre dosyasına girínce, belirtilen mesajı vermesi gerekmiyor mu?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 02 Ağustos 2015 - 21:46:11
O şekilde yaparsanız otomatik olarak sonunda yeni satır oluşur (0a karakteri). Engellemek için hexedit vb. gibi bir programla yazmanız gerekir sifre.txt'yi.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: h454n - 02 Ağustos 2015 - 22:02:47
Hmm, Şimdí oldu.Ben uç birimden prínt ile yazdırıyordum.
Metin düzenleyicísí íle yazdırınca sorun olmadı.
Teşekkúrler bilgí icín.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 02 Ağustos 2015 - 23:47:26
@oasln, vidyo ne halde ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 02 Ağustos 2015 - 23:52:30
Bende sabirsizlikla bekliyorum :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 03 Ağustos 2015 - 01:09:15
Neymis arkadas bu video ya. İyi ki ömrümüzde bir sifre.txt bulduk :)

Buyrun: https://www.youtube.com/watch?v=Q3dGB0M1fFY

En ideal çözüm muhtemelen bu değildir ama ben böyle yaptım :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 03 Ağustos 2015 - 01:14:51
Hemen izliyorum  :)



Aga cok guzel anlatmissin fakat bilmedigim icin ben birsey anlamadim ama bir sistemin sifresini kiriyormussun gibi hissettim :) Hacker filmi izler gibi izledim :) Cok tesekkurler devamini bekleriz :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 03 Ağustos 2015 - 01:31:41
@oasln, vidyolu anlatım için teşekkürler gayet güzel bir yöntem kullanmışsın. Tebrikler.  ;)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 03 Ağustos 2015 - 20:38:14
@oasln, video icin tesekkurler.Bu arada
reverse (https://github.com/joelpx/reverse) yaziliminin yerine sozde kod icin  hopper (http://www.hopperapp.com/download.html) tavsiye ederim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 03 Ağustos 2015 - 23:09:20
IDA ve Hopper'i lisansları nedeniyle tercih etmedim. Sonuçta bu benim için sadece bir hobi, ödün vermeye gerek yok.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 03 Ağustos 2015 - 23:17:10
IDA icin kabul edilebilir de.Hopper 30 dakika gibi bir sure veriyor yazilimi calistirmaniz icin.
Tabi benim ki sadece bir tavsiye.Kullanip kullanmamak size kalmis.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: heartsmagic - 04 Ağustos 2015 - 01:49:39
Ben de, bu başlığı çekirdek çıtlayıp film izler gibi takip ediyorum :)
@oasln, ilk video için muazzam olmuş bence.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: karakartala - 04 Ağustos 2015 - 08:30:19
Video güzel olmuş. Videodan sonra tekrar Assembly öğrenmeye başlama isteği duydum. :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 12 Ağustos 2015 - 16:46:34
http://www.dosya.tc/server3/k90u89/a8.zip.html (http://www.dosya.tc/server3/k90u89/a8.zip.html)

:D

Maksat konuyu hortlatmak :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 12 Ağustos 2015 - 17:21:51
cevap için diğer arkadaşları bekliyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 12 Ağustos 2015 - 19:56:50
istenen ne onu anlamadım
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 12 Ağustos 2015 - 20:06:52
C'yi istiyorum. Bu konudaki ilk gönderiler gibi.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: ahmet_matematikci - 12 Ağustos 2015 - 22:05:49
sonuç ne oldu  ???
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Ağustos 2015 - 02:10:58

//Reversed source code - Reverser
//file a8 x64 bit

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
//counter = 0x63 = 99 | 0x0 = 0
int counter;
for(counter = 99; counter > 0; counter--)
{
if(counter != 1)
{
printf("%d bottles of beer on the wall, %d bottles of beer. Take one down and pass it around, %d bottles of beer on the wall.\n", counter,counter,counter);
}
else
{
printf("%d bottles of beer on the wall, %d bottles of beer. Take one down and pass it around, no more bottles of beer on the wall.\nNo more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall.",counter, counter);

}
}
  return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 13 Ağustos 2015 - 07:43:48
Adlar dışında tamamen aynı :D
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Ağustos 2015 - 18:19:29
bu da benden gelsin: [1]
Not: dosya stripped değil, bu nedenle her şey ortada. Sadece biraz uğraşmak gerekiyor anlamak için. :)
İstenen: ASM çıktısını, C/C++, Java, LUA ya da Python gibi herhangi bir dile çevirmek.
[1] http://s6.dosya.tc/server/a4wa5m/reverse.zip.html
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 13 Ağustos 2015 - 18:27:57
Silme linki atmışsın. :P

Not: 32 bit atmadım çünkü multilib sorun çıkarmaya başladı.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 13 Ağustos 2015 - 18:33:22
yine aynı şeyi yaptım, sen de sildin tabii :D
her neyse, düzelttim linki.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 13 Ağustos 2015 - 18:34:41
NULL'un içini buldum. Şİmdi diğerlerine bakayım :P
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 16 Ağustos 2015 - 16:46:27
son paylaştığım dosya ile uğraşan oldu mu ?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 16 Ağustos 2015 - 17:14:14
Ben uğraşmaya çalıştım ama hiç yapamıyom :(
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 17 Ağustos 2015 - 01:10:30
@betseg, Tersine kodlamak zaten ugrastiricidir.
Ben de soyle bir goz attabildim sadece. :)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FylNQj0.png&hash=5811c9e091626186dda2ff4a7e9506ddfd57c271) (https://hizliresim.com/ylNQj0)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 17 Ağustos 2015 - 01:20:31
İpucu veriyorum.
movb   $0x44,-0x1(%rbp)
>>> chr(0x44)
'D'

compare dan sonra bolca jump var.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 17 Ağustos 2015 - 11:04:29
Ben biraz baktım da fonksion pointerini çağırdığı yeri çözemedim:

Şöyle bişey:


#include <stdio.h>

void gectin() {
    puts("Geçtin");
}

void (*fn)() = gectin;

int main (int argc, char *argv[])
{
    char gecme_notu = 'D';

    puts("Reverse_me*");

    if ((unsigned) gecme_notu - 65 <= 5) {
        /* ??????? */
        fn();
    } else {
        puts("Geçersiz not.");
        /* geri buraya atlıyor geçse bile */
        printf("Geçme notu: %c\n", gecme_notu);
    }

    return 0;
}
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 17 Ağustos 2015 - 14:52:42
tanımlı olan bir harf notumuz var "0x44" yani "D" karakteri. Ardından bu harf notu alınıyor, tanımlı olan harf notları ile karşılaştırılıyor ve kendisi ile ilişkili olan mesajı ekrana basıyor.
/* geri buraya atlıyor geçse bile */
printf("Geçme notu: %c\n", gecme_notu);

evet, atlaması normal zira o şekilde kodlandı.

Diğer harf notlarını ve kendileri ile ilişkilendirilmiş olan, mesajlar ile birlikte tersine kodlanmış olan kaynak kodu istiyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 22 Ağustos 2015 - 16:36:33
en son paylaştığım reverse_me.zip kaynak kodu:

#include <stdio.h>
#include <stdlib.h>


int main (int arg, char *argv [])
{
   char not = 'D';
   printf("Reverse_me*\n");
   switch(not)
   {
   case 'A' :
      printf("Harika !\n" );
      break;
   case 'B' :
   case 'C' :
      printf("İyisin iyi :)\n" );
      break;
   case 'D' :
      printf("Geçtin\n" );
      break;
   case 'F' :
      printf("Daha iyisini yapabilirsin.\n" );
      break;
   default :
      printf("Geçersiz not.\n" );
   }
   printf("Geçme notu: %c\n", not );
   return 0;
}


derlenme şekli:
gcc reverse_me.c -o reverse.zip
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 25 Ağustos 2015 - 14:16:10
Anlatim da benden olsun ama switch case yapisi ile hic aklima gelmedi acikcasi. :)
Ben direk, if else yapisindan yurumustum. Sozde kodlar da zaten bu yolu gosterdi.Ben de fazla zorlamadim acikcasi.Isin ucunda devreleri yakmakta var tabi. :)
Aslinda analiz yapip, notlarimi almistim.Bir tek kontrol etmek kaldi ama araya yogunluk girince, oyle kaldi.:(
@Reverser, biraz sabirsizlanmis anlasilan(=>He bi dur da bakacaz,Indirmisiz yazilimi elinde sonunda vaktimiz olacak da. :)<=) :)
Yazilimin cok agir oldugunu dusunen kodcumuz, bir hafifletme teknigi kullanmis. :) (Partial RELRO)
Yani derleme olarak -Wl,-z,relro kullanilmis.Hee bir etki eder mi? yok canim ne yapsin bize.Ha gcc file.c -o file, ha o :) Sadece ikiye ayrildigini belirtelim yeter herhalde.
   RElocation Read-Only
1 => Kismi (Partial Relro)
2 => Tam (Full Relro)


RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FILE
Partial RELRO   No canary found   NX enabled    No PIE          No RPATH   No RUNPATH   reverse.zip

Neyse biz kodlarimiza donelim.Yazilimci dostumuzun neden hafif siklet bransini sectigini kendisine birakalim. :) Bu kadar bilgi yeterli zira.Fazla bilgi bas agrisi yapar :)

  push   rbp
  mov    rbp,rsp
  sub    rsp,0x20
  mov    DWORD PTR [rbp-0x14],edi
  mov    QWORD PTR [rbp-0x20],rsi
  mov    BYTE PTR [rbp-0x1],0x44 ;"Tanimli Harfimiz 0x44 = D"
  mov    edi,0x4006a8 ; "Reverse_me*"
  call   400450 <puts@plt>
  movsx  eax,BYTE PTR [rbp-0x1] ;"Tanimli harf eax registirina tasiniyor"
  sub    eax,0x41 ; "Karaya cikarma yapiliyor.Savas basladi :)  0x44 - 0x41 = 0x3"
  cmp    eax,0x5 ; "5 ile karsilastir. Buyukse ?"
  ja     4005eb <main+0x65 = 101> ;"Karsilastima sonucu, Eger 5'ten buyuksem main+101 zipla # Gecersiz Not Kismi."
  mov    eax,eax
  mov    rax,QWORD PTR [rax*8+0x400710] ; "Cikarma isleminden sonra hangi ada'ya ayak basacam daa ben.??????????"
"Bakalim adalarimiza."
  gdb => x/12xw 0x400710
0x400710: 0x004005bb 0x00000000 0x004005c7 0x00000000
0x400720: 0x004005c7 0x00000000 0x004005d3 0x00000000
0x400730: 0x004005eb 0x00000000 0x004005df 0x00000000
"Kontrol yapalim ve aciklayalim."
  rax = 0 ise  = 0x004005bb Harika kismina yolla beni
  rax = 1 veya 2 ise = 0x004005c7 Iyisin iyi
  rax = 3 ise  = 0x004005d3 Gectin ; Bu bizim islem sonucumuz oluyor.
  rax = 4 ise  = 0x004005eb Gecersiz Not
  rax = 5 ise  = 0x004005df Daha Iyisini yapabilirsin
  rax = 5'ten buyuksem, beni yine gecersiz not kismina yolla.
 
 
  jmp    rax
  mov    edi,0x4006b4 ; "Harika"
  call   400450 <puts@plt>
  jmp    4005f5 <main+0x6f>
  mov    edi,0x4006bd ; "Iyisin iyi"
  call   400450 <puts@plt>
  jmp    4005f5 <main+0x6f>
  mov    edi,0x4006cc ; "Gectin"
  call   400450 <puts@plt>
  jmp    4005f5 <main+0x6f>
  mov    edi,0x4006d4 ;"Daha iyisini yapabilirsin."
  call   400450 <puts@plt>
  jmp    4005f5 <main+0x6f>
  mov    edi,0x4006ef ;"Geçersiz not."
  call   400450 <puts@plt>
  movsx  eax,BYTE PTR [rbp-0x1]; "0x44"
  mov    esi,eax
  mov    edi,0x4006fe ;"Geçme notu: %c\n"
  mov    eax,0x0
  call   400460 <printf@plt>
  mov    eax,0x0
  leave 
  ret 

Analiz tamam.Anladik mi? Anladik daa  :)
O zaman  eller calissin degil mi ama :)

cat << EOF > reverse.c
main(int not, int gec) {
puts("Reverse_me*");
not = 0x44;
gec = not  - 0x41;
  if(gec == 0x0)
    printf("Harika !\n");
      if(gec == 0x1||gec == 0x2)
        printf("Iyisin iyi\n");
          if(gec == 0x3)
            printf("Gectiniz\n");
              if(gec == 0x4||gec > 5)
                printf("Gecersiz Not.\n");
                  if(gec == 0x5)
                    printf("Daha iyisini yapabilirisin.\n");
           else
           printf("Gecme notu %c:\n",not);
     return 0;
  }
EOF
gcc -x c reverse.c && ./a.out

Evet,basit olarak boyle kodlar yazabiliriz.Konuyu anladiysak zaten  janjanli, conconlu  kodlar da yazabiliriz. :)
Yazimi dun gece tamamladim hatalarim olduysa  numaraya mesaj atin :) 383137633064337240676d61696c2e636f6d
Son olarak janjanli bir  gorsel yukleyelim ve bitirelim :)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FL4DYk1.png&hash=b3d6ca6c1644deaac696a477b02e91a63f3a87d2) (https://hizliresim.com/L4DYk1)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 25 Ağustos 2015 - 14:29:03
@817c0d3r, Haydaaaa ! E bunedir ya !? [1] https://www.youtube.com/watch?v=LEgkkb6qwKw :D :D
Hocam bekledim o kadar kimseden ses çıkmayınca paylaşayım dedim. Partial RELRO ile özel olarak uğraşmadım normal şekilde derledim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 25 Ağustos 2015 - 14:33:53
:)
Yok ya ben espri yaptim @Reverser.Inceledim ama kimse ceviri yapmayinca ben yapayim dedim.Sizde haklisiniz.Zaten paylasmayacaktim ama  ceviri yapilmayinca, anlatim tadinda olsun istedim :)
Normal de inceleme firsatim olursa incele gec taktigi uyguluyorum. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 25 Ağustos 2015 - 14:35:33
farkındayım hocam sıkıntı yok. :) Anlatımınız için kendi adıma teşekkür ediyorum zira okurken keyif aldım. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 25 Ağustos 2015 - 14:37:57
Rica ederim @Reverser.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: betseg - 25 Ağustos 2015 - 22:45:33
2 günlük tatilde can sıkıntısından yaptığım bir şey  :-\
C plz
http://s3.dosya.tc/server4/kiradm/a10.zip.html
Not: multilib sorun çıkarıyor, 32 bit yükleyemiyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 27 Ağustos 2015 - 13:40:26
@betseg, en son attığın dosyadan şimdiye kadar çıkartabildiğim kaynak kod assembly satırlarıyla birlikte aşağıda. (Henüz doğru çalışmıyor.)

//Reversed source code
//file: a10 x64
//Reverser

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h> // -> uint32_t

/* Functions
0x00000000004005b6  this_is_last_lel         --> Called in main
0x00000000004005e2  this_is_last             --> Called in sub function
0x0000000000400602  this_thingy_thing        --> Called in sub function
0x0000000000400618  this_thing               --> Called in main
0x0000000000400679  this_other_thing         --> Called in main
0x0000000000400704  this_last_thing          --> Called in main
0x0000000000400768  this_otter_thingy_thing  --> Called in sub function
0x000000000040077e  main
*/

//Function prototypes
int this_thing(int inpt);
int this_other_thing(int inpt);
int this_last_thing(int inpt);
int this_is_last_lel(int inpt);

int this_is_last(int inpt);
int this_thingy_thing(int inpt);
int this_otter_thingy_thing(int inpt);



int main(int argc, char *argv)
{
int inpt;
printf("integer pl0x lel");
scanf("%d",&inpt);

/*
0x00000000004007b1 <+51>: test   %eax,%eax
    0x00000000004007b3 <+53>: jle    0x4007c9 <main+75>
*/
if(inpt <= 0)
{
this_other_thing(inpt);
}
/*
0x00000000004007bb <+61>: mov    %eax,%edi
    0x00000000004007bd <+63>: mov    $0x0,%eax
    0x00000000004007c2 <+68>: callq  0x400618 <this_thing>
*/
else if(inpt > 0)
{
this_thing(inpt);
}
/*
0x0000000000400801 <+131>: jne    0x40080b <main+141>
*/
else if(inpt != 0)
{
this_is_last_lel(inpt);
}
/*
0x00000000004007d1 <+83>: jns    0x4007e7 <main+105>
*/
else
{
this_last_thing(inpt);
}
}

/*
0x0000000000400628 <+16>: imul   %edx,%eax
*/
int this_thing(int inpt)
{
inpt *= inpt;
/*
0x0000000000400639 <+33>: mov    $0x4008b4,%edi
    0x000000000040063e <+38>: mov    $0x0,%eax
    0x0000000000400643 <+43>: callq  0x400480 <printf@plt>
*/
printf("%d",inpt);
/*
0x000000000040065a <+66>: cmp    $0xa,%eax
    0x000000000040065d <+69>: jg     0x40064a <this_thing+50>
*/
while(inpt > 10)
{
this_thingy_thing(inpt); //no args ? not sure.
}
/*
0x0000000000400667 <+79>: mov    $0x4008b7,%edi
    0x000000000040066c <+84>: mov    $0x0,%eax
    0x0000000000400671 <+89>: callq  0x400480 <printf@plt>
*/
return printf("%d\n",inpt);
}

/*
   0x0000000000400679 <+0>: push   %rbp
   0x000000000040067a <+1>: mov    %rsp,%rbp
   0x000000000040067d <+4>: mov    0x2006e9(%rip),%eax        # 0x600d6c <a>
   0x0000000000400683 <+10>: neg    %eax
   0x0000000000400685 <+12>: mov    %eax,0x2006e1(%rip)        # 0x600d6c <a>
   0x000000000040068b <+18>: mov    0x2006db(%rip),%edx        # 0x600d6c <a>
   0x0000000000400691 <+24>: mov    0x2006d5(%rip),%eax        # 0x600d6c <a>
   0x0000000000400697 <+30>: imul   %edx,%eax
   0x000000000040069a <+33>: mov    %eax,0x2006cc(%rip)        # 0x600d6c <a>
   0x00000000004006a0 <+39>: mov    0x2006c6(%rip),%eax        # 0x600d6c <a>
   0x00000000004006a6 <+45>: neg    %eax
   0x00000000004006a8 <+47>: mov    %eax,0x2006be(%rip)        # 0x600d6c <a>
   0x00000000004006ae <+53>: mov    0x2006b8(%rip),%eax        # 0x600d6c <a>
   0x00000000004006b4 <+59>: mov    %eax,%esi
*/
int this_other_thing(int inpt)
{
inpt = - inpt;
inpt = inpt * inpt;
inpt = - inpt;
/*
0x00000000004006b6 <+61>: mov    $0x4008b4,%edi
    0x00000000004006bb <+66>: mov    $0x0,%eax
    0x00000000004006c0 <+71>: callq  0x400480 <printf@plt>
*/
printf("%d",inpt);
inpt = - inpt;

while(inpt < 10)
{
this_thingy_thing(inpt);
}
return printf("%d\n",inpt);
}

int this_last_thing(int inpt)
{
inpt = 0x0;
//   0x000000000040071e <+26>: add    %edx,%eax
inpt = inpt + inpt;
printf("u found dat thing ");
/*
0x0000000000400756 <+82>: callq  0x400480 <printf@plt>
    0x000000000040075b <+87>: mov    $0x4008d0,%edi
    0x0000000000400760 <+92>: callq  0x400470 <puts@plt>
*/
printf("w0w");
}

/*
   0x00000000004005c2 <+12>: sub    $0x1,%eax
   0x00000000004005c5 <+15>: mov    %eax,0x2007a1(%rip)        # 0x600d6c <a>
   0x00000000004005cb <+21>: mov    $0x0,%eax
*/
int this_is_last_lel(int inpt)
{
while(inpt > 0)
{
inpt = inpt - 1;
//   0x00000000004005d0 <+26>: callq  0x4005e2 <this_is_last>
this_is_last(inpt); //No args ? Not sure.
}
return inpt;
}

/*
   0x00000000004005ec <+10>: sub    $0x1,%eax
   0x00000000004005ef <+13>: mov    %eax,0x200777(%rip)        # 0x600d6c <a>
   0x00000000004005f5 <+19>: mov    $0x0,%eax
*/
int this_is_last(int inpt)
{
inpt = inpt - 1;
//  0x00000000004005fa <+24>: callq  0x4005b6 <this_is_last_lel>
this_is_last_lel(inpt);
return inpt;
}

int this_thingy_thing(int inpt)
{
/*
0x0000000000400606 <+4>: mov    0x200760(%rip),%eax        # 0x600d6c <a>
    0x000000000040060c <+10>: sub    $10,%eax
*/
inpt = inpt - 10;
//   0x0000000000400617 <+21>: retq   
return inpt;
}

int this_otter_thingy_thing(int inpt)
{
/*
0x000000000040076c <+4>: mov    0x2005fa(%rip),%eax        # 0x600d6c <a>
    0x0000000000400772 <+10>: add    $0xa,%eax
*/
inpt = inpt + 10;
//   0x000000000040077d <+21>: retq 
return inpt;
}

not düşmek istiyorum.
1-)Fonksiyon adları birbirine çok benziyor bu nedenle anlamaya çalışmak fazlasıyla zor.
2-)Programında hatalar var gibi. Bir kaç fonksiyon loop içinde çağırılmış ama argüman almamış. (ya da ben yanlış anladım)
3-)Assembly satırlarıyla birlikte kod çıktısını okumak isteyenler, kodları IDE gibi bir ortam üzerinde okumanızı tavsiye ediyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 30 Ağustos 2015 - 19:09:02
Ben de bir krekme paylasayim.Ister kod cevirisi yapin ister krekleyin. :)
Zaten cok basit.Zorluklari asinca. :)
Ekran goruntusu:
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FRVg2Jn.png&hash=7e27fbabd4cca06e61e29544076b7402ae59ea2c) (https://hizliresim.com/RVg2Jn)
http://s3.dosya.tc/server5/fh8ns3/crackme_.zip.html (http://s3.dosya.tc/server5/fh8ns3/crackme_.zip.html)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 30 Ağustos 2015 - 19:42:10
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fstorage9.static.itmages.com%2Fi%2F15%2F0830%2Fh_1440952830_3846549_682a50f8d8.png&hash=ee27b4b03ea4f28bc6468aef9332b19d92b0ddd6)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 30 Ağustos 2015 - 19:47:06
@Reverser;
Aciklama alalim birde :)
Amac zaten analiz etmek.
Yoksa zaten cok basit.
Analiz edip.Vaktiniz olursa kod cevirisi de yapabilirsiniz.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 30 Ağustos 2015 - 20:12:21
kullanıcı adı ile şifre'nin aynı olması yeterli.
Anladığım kadarıyla, long int strtol(const char *nptr, char **endptr, int base); fonksiyonu asıl olarak kullanılmakta. Rahat bir zamanda kod çevirisini de yaparım hocam.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 31 Ağustos 2015 - 14:05:21
Malesef tam olarak degil @Reverser.
Kullanici adinin ilk harfi kontrol ediliyor sadece.
Ceviri icin de sanirim bu bilgi yeterli. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 31 Ağustos 2015 - 21:52:18
Merhaba,

Benim birkaç sorum olacaktı bu konu hakkında. Özellikle @817c0d3r ve @Reverser'a. 20 yaşındayım, matematik bilgim 4 işlemden fazla değil. Fakat çok uzun süredir programlama ile uğraşıyorum.

1-) GDB Kullanımını nereden öğrendiniz? Türkçe kaynak var mıdır?

2-) Assembly dilini nereden öğrendiniz?

3-) Bu konuda kendimi geliştirmek için neler yapmalıyım?


Teşekkürler. Herkese iyi akşamlar.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 01 Eylül 2015 - 18:03:19
@817c0d3r, doğrudur hocam fazla inceleme fırsatı bulamadım henüz.
@kaansef,
1-) GDB kullanımını, yazdığım programların davranışlarını analiz etmek için debug ederken öğrendim. GDB kullanımı ile ilgili bilgi veren sayısız yabancı kaynak mevcut.
2-) Assembly öğreneli çok uzun zaman oldu, açıkçası net olarak hatırlamıyorum ama bir çok kaynak var assembly için. (Bu arada assembly becerim aman aman iyi değildir. Bu konuda @817c0d3r daha çok yardımcı olabilir. )
3-) Bu konuda, özellikle programlama konusunda yabancı dil çok önemli. Yabancı dilin varsa özellikle 'İngilizce' kendini çok hızlı şekilde geliştirebilirsin. Ben senin yerinde olsam bolca Assembly intsruction reference setlerine bakar ve anlamaya çalışırdım. Küçük küçük programlar yazar, GDB altında analiz ederdim.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 01 Eylül 2015 - 21:29:51
Cevapladığınız için çok teşekkür ederim. Assembly'yi biliyorum sayılır fakat nedense assembly programı yazmak için kendimi yeterli görmüyorum. Daha çok geliştirmek istiyorum. Biraz karışık bir öğrenme dönemi geçirdim, herşey birbirine girdi bu yüzden. 6502, 8086, x86, x64 hepsini bir arada öğrenmeye çalıştım. Şimdi birbirine karıştırıyorum.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 06 Eylül 2015 - 22:20:27
Hafta sonuna yetistirecektim sozle ama malesef yetismedi.Firindan daha yeni cikti :)
@Reverser, Cozerseniz ozelden alalim cevabi sizden. :)
Basit bir krekmi zaten.Diger arkadaskari tesvik edelim.
http://s6.dosya.tc/server2/9tebmc/badman.exe.zip.html (http://s6.dosya.tc/server2/9tebmc/badman.exe.zip.html)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FRVRlO1.png&hash=8fbf2bf901b4ff7f9cabf0f005492277341493b8) (https://hizliresim.com/RVRlO1)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 07 Eylül 2015 - 00:28:22
Alıntı yapılan: 817c0d3r - 06 Eylül 2015 - 22:20:27
Hafta sonuna yetistirecektim sozle ama malesef yetismedi.Firindan daha yeni cikti :)
@Reverser, Cozerseniz ozelden alalim cevabi sizden. :)
Basit bir krekmi zaten.Diger arkadaskari tesvik edelim.
http://s6.dosya.tc/server2/9tebmc/badman.exe.zip.html (http://s6.dosya.tc/server2/9tebmc/badman.exe.zip.html)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FRVRlO1.png&hash=8fbf2bf901b4ff7f9cabf0f005492277341493b8) (https://hizliresim.com/RVRlO1)

Yarin zaman bulursam bakacagim. Sifre kirma daha zevkli. Umarim son ornek gibi "truncated" degildir :-)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 07 Eylül 2015 - 00:36:29
@oasln, yazilim  calisiyorsa  sorun yoktur. :) Calismiyorsa isi zorlastirir. :)
Kolay gelsin.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 07 Eylül 2015 - 02:22:19
Su yaptiginiz ise gercekten cok hevesleniyorum ama acele etmemem gerek daha C tam bilmiyorken Tersine Muhendislige kalkismak sacma olacaktir zanlimca, takipteyim konu harika ozellikle cekilen video :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 07 Eylül 2015 - 18:12:47
Merhabalar;
Sanirim bazi arkadaslarin kafasi karismis.Bir noktaya deginmem gerekti.
Bazilari indirdikleri dosyayi direk inceliyorlar herhalde.
Inen dosyaya file komutu ile kontrol edip sizi yaniltmasin

$ file badman.exe.zip
badman.exe.zip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59765af37e3e4a32676ff5fd3a4153e8a3026b70, stripped

Asil dosyamiz bu degil. :)
Sadece arsiv dosyamiz.Ben ucbirim uzerinden cikarmaniz kolay olsun diye bu yolu sectim.Yaniltmasin sizi.

$ strings badman.exe.zip|grep -i sfx
Usage: 7zSFX [<command>] [<switches>...]
7-Zip SFX 9.38 beta  Copyright (c) 1999-2014 Igor Pavlov  2015-01-03

Yani kisaca ucbirimden arsiv dosyasiini calistirdiginiz zaman.

$ ./badman.exe.zip
7-Zip SFX 9.38 beta  Copyright (c) 1999-2014 Igor Pavlov  2015-01-03
p7zip Version 9.38.1
7-Zip SFX 9.38 beta  Copyright (c) 1999-2014 Igor Pavlov  2015-01-03
p7zip Version 9.38.1 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs,ASM)
Processing archive: ./badman.exe.zip
Extracting  badman
Everything is Ok

badman adinda ki asil dosyamizi incelemeniz gerekiyor. :)

$ file badman
badman: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped
$ wc -c badman
1087 badman

1.1 kb'lik bir dosya sadece.Karsilama logosunu cikartirsaniz, 345 bayt falan. :)
Bilgi olarak paylasmak istedim.
Her zaman kilosunu dusurmak icin arsivleme kullanmayacagiz.Biraz tersih olsun. :)

Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 07 Eylül 2015 - 19:58:40
hocam, arşivden çıkarıp execute etme kısmında sorun yok fakat asm dökümüne ulaşmak bayağı uğraştıyor. Analizim henüz tamamlanmadı ne olduğunu anlamaya çalıştığım bir fonksiyon var ve fonksiyon char tipinde veri döndürüyor bu fonksiyonu reverse edebilirsem sonucu size bildireceğim. :) Yeni başlayanlar için biraz fazla uğraştırıcı sanki.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 07 Eylül 2015 - 20:21:18
Statik analiz icin yardimci olayim o zaman.
Dinamik analiz ellerinizden oper. :)
objdump -M intel -D -m i386 -b binary --start-address=0x74 badman
yada

cat badman|ndisasm -b32 -

Oohh, o kadar zor mu? olmus.
Demek ki kolaylik kavrami goreceli birseymis. :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 07 Eylül 2015 - 22:18:18
Merhaba,

Arkadaşlar birkaç sorum olacak bu konu hakkında. Birçok programlama dili biliyorum ve 2007'den beri aktif olarak kullanıyorum. Kendimi daha çok geliştirmek istiyorum. Matematik bilgim 4 işlemden ibaret. İngilizcem ise iyi değil (teknik ingilizce hariç). Eğer mümkünse yaşlarınızı ve mesleğinizi yazıp, bu konulara nasıl ulaştığınızı yazabilir misiniz? Nasıl başladınız ve nasıl geliştirdiniz? Geliştirecek olanlara tavsiyeleriniz nelerdir? Şimdiden teşekkür ederim. Herkese iyi akşamlar.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 08 Eylül 2015 - 03:51:08
@kaansef hocam cok guzel bir konuya deginmissiniz :) Ayri bir konu uzerinden paylasirsaniz cok makbule gecer tesekkurler :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 08 Eylül 2015 - 11:30:18
@ShaoTT aslında bu konu üzerinde paylaşılsa daha çok işe yarar kanısındayım. Çünkü farklı bir konu açarsak konuyu bölmüş olacağız.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 08 Eylül 2015 - 13:46:05
@kaansef;
Bence de ayri bir baslik altinda daha iyi olur ama x86  ASM de kendinizi gelistirmeniz icin ben sizi turkce kaynaklara yonlendireyim.
X86  ASM (http://cse.google.com/cse?cx=001091367884625497444:ds6samkvpgu&cof=FORID:0&q=+X86+Assembly&sa=Ara#gsc.tab=0&gsc.q=X86%20Assembly&gsc.page=1)
Uzun bir anlatim isteyen bir konu. :(
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 08 Eylül 2015 - 14:54:50
O zaman yeni konudan devam edelim :)

https://forum.ubuntu-tr.net/index.php?topic=48749.0
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 09 Eylül 2015 - 13:23:54
Alıntı yapılan: 817c0d3r@kaansef;
Bence de ayri bir baslik altinda daha iyi olur ama x86  ASM de kendinizi gelistirmeniz icin ben sizi turkce kaynaklara yonlendireyim.
X86  ASM
Uzun bir anlatim isteyen bir konu.
tÜRKÇE KAYNAK GÜZEL OLDU GERÇEKTEN...
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 09 Eylül 2015 - 17:13:41
Sadece merakımdan soruyorum. Yeni çıkan bilgisayar oyunlarının kopya korumasını kaldırabiliyor musunuz? Yoksa bu tahmin ettiğim gibi çok tecrübe gerektiren bir iş mi?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 09 Eylül 2015 - 21:19:04
Alıntı yapılan: kaansef - 09 Eylül 2015 - 17:13:41
Sadece merakımdan soruyorum. Yeni çıkan bilgisayar oyunlarının kopya korumasını kaldırabiliyor musunuz? Yoksa bu tahmin ettiğim gibi çok tecrübe gerektiren bir iş mi?
Açıkcası fazla oyun oynayan biri değilim, oynadığım zamanlarda steam üzerinden satın almaya çalışıyorum hiç denemedim :P. Ama CRC bypass konusunda teknik bilgim var server tabanlı oyunlarda CRC sistemini bypass edip memory edit ile avantaj sağlayabildiğim oyunlar oldu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 09 Eylül 2015 - 21:44:11
Cevabınız için teşekkür ederim. Aslında video'lu anlatımla gdb kullanımını anlatabilirseniz çok iyi olur. Bu konuda çok büyük bir Türkçe kaynak sorunumuz var.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 09 Eylül 2015 - 23:42:26
Alıntı yapılan: kaansef - 09 Eylül 2015 - 21:44:11
Cevabınız için teşekkür ederim. Aslında video'lu anlatımla gdb kullanımını anlatabilirseniz çok iyi olur. Bu konuda çok büyük bir Türkçe kaynak sorunumuz var.
pekâlâ, bundan sonraki anlatımları kendi adıma video olarak hazırlayacağım. İlgi olsun yeter ki..
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 10 Eylül 2015 - 00:30:41
Çok teşekkür ederim @Reverser. Baştan anlatırsanız çok iyi olur. Böylece acemi kullanıcılarda faydalanırlar.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Reverser - 10 Eylül 2015 - 00:56:42
Hatta bu gece hazırlayayım bir tane.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 10 Eylül 2015 - 04:35:11
@Reverser bekliyoruz hocam kolay gelsin :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 10 Eylül 2015 - 11:35:25
Alıntı yapılan: 817c0d3r - 06 Eylül 2015 - 22:20:27
Hafta sonuna yetistirecektim sozle ama malesef yetismedi.Firindan daha yeni cikti :)
@Reverser, Cozerseniz ozelden alalim cevabi sizden. :)
Basit bir krekmi zaten.Diger arkadaskari tesvik edelim.
http://s6.dosya.tc/server2/9tebmc/badman.exe.zip.html (http://s6.dosya.tc/server2/9tebmc/badman.exe.zip.html)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FRVRlO1.png&hash=8fbf2bf901b4ff7f9cabf0f005492277341493b8) (https://hizliresim.com/RVRlO1)

Sonunda bakma firsati bulabildim:
185579795
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: Sh4oTT - 10 Eylül 2015 - 11:39:07
@oasln hocam video yokmu bu sefer :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: oasln - 10 Eylül 2015 - 12:32:57
Cok ayrıntılı derin bir video hazırladım:

(https://www.dropbox.com/s/75erxv0m53kai8i/badman2.gif?raw=1)

817c0d3r'in de dediği gibi basit bir örnek olduğu için video çekmek zor olabilir :)
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: kaansef - 10 Eylül 2015 - 17:02:52
Videodan kastım gdb'nin kullanımını anlatan bir videoydu. Mesela gdb şöyle kullanılır, bunu yazarsanız bu olur, şunu yaparsanız böyle olur, gibi bir anlatımdı. Eğer mümkünse böyle bir video yayınlar mısınız?
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 11 Eylül 2015 - 14:44:24
Alıntı yapılan: nurullahisrgan - 09 Eylül 2015 - 13:23:54
Alıntı yapılan: 817c0d3r
X86  ASM
Uzun bir anlatim isteyen bir konu.
tÜRKÇE KAYNAK GÜZEL OLDU GERÇEKTEN...
Rica ederim.
Alıntı yapılan: oasln - 10 Eylül 2015 - 12:32:57
Cok ayrıntılı derin bir video hazırladım:

817c0d3r'in de dediği gibi basit bir örnek olduğu için video çekmek zor olabilir :)
@oasln, Tebrikler. :)
Bu arada cozulmeyen bir krekme var.Vakit buldugunuz da bir bakin bakalim, cozebilecekmisin. :)
Simdiden soyleyim zordur kendileri. :)
http://s2.dosya.tc/server/mkl0xg/crackme3.zip.html
Bu arada crackme ile ilgili analiz gibi adimlar gecmeyiniz.Google amcamiz index yapmasin. :)
Profesyonel bir kisi icin hazirlandi.Burada sadece bakmaniz icin paylasildi.
Hazirladigim kisiye ayip olmasin. :)
Ozel mesaj atabiliyorsaniz ordan alabilirim analizlerinizi.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: -DıLgEş- - 12 Eylül 2015 - 12:09:19
http://www.enderunix.org/docs/devbook/x86.html
http://www.teknove.com/assembler-dersleri-213.html
Assembly için güzel başlangıç olur herhalde..
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 15 Eylül 2015 - 07:03:55
Merhabalar;
Yeni oyunumuz kaptir da gel(CTF=Capture the flag) :))
Oyuna Baslama Adresiniz (http://817c0d3r.uboxi.com/crkm/)
Kisace Bilgilendirelim, katilacak arkadaslarimizi.
Verilen sitede bir Kreklemi yazilimi mevcut ve sizin onu bulmanizi ve kreklemenizi bekliyor.
Oyuna Katilacak arkadaslara simdiden basarilar. :)
Sitede yeterince ipucu verdigimi dusunuyorum.Tabi yine yardimci olurum buradan.
Umarim egelenirsiniz.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 15 Eylül 2015 - 13:42:21
oooo kernel exploitler falan girmiş işin içine. :D

╭─reverser@reverser  ~ 
╰─$ nmap -T4 -F 31.170.167.153

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-15 13:38 EEST
Nmap scan report for 817c0d3r.uboxi.com (31.170.167.153)
Host is up (0.30s latency).
Not shown: 96 filtered ports
PORT   STATE  SERVICE
21/tcp open   ftp
22/tcp closed ssh
80/tcp open   http
81/tcp closed hosts2-ns

Nmap done: 1 IP address (1 host up) scanned in 11.15 seconds
╭─reverser@reverser  ~ 
╰─$ ftp 31.170.167.153
Connected to 31.170.167.153.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 16 of 500 allowed.
220-Local time is now 06:39. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
Name (31.170.167.153:reverser): 817c0d3r
331 User 817c0d3r OK. Password required
Password:
530 Login authentication failed
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.

biraz daha kafa yormak lazım...
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 15 Eylül 2015 - 14:24:26
Sistemi hacklemenize gerek yok. :)
Yazilim zaten site icinde.
Ana sayfadakilerin suan icin konu ile ahlakasi yok.
Size verilen adres ipucuna goturecektir.
Yazilimi almaniz icin herhangi bir hacking islemine gerek yok.
Bu yolu secmende ki asil amac, beyin yormak.Argo olarak, kafa acmak diyebiliriz.
Tekrar soyleyim.Sisteme herhangi bir saldiri yapmaniza gerek yok. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 15 Eylül 2015 - 14:27:19
Noldu :D
Alıntı YapService Temporarily Unavailable
The server closed the connection without sending any data.
The server is temporarily unable to service your request due to maintenance downtime or capacity problems.
Due to heavy load on the server, connections may be temporarily blocked from locations that fetch an unusually high number of pages.
We apologize for the inconvenience.

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 15 Eylül 2015 - 14:29:01
Sorun yok sunucu calismakta. :)
Vaktiniz cok arkadaslar. Acele etmenize gerek.
Cozumu 1 hafta sonra aciklanacaktir.Eger cozen olmazsa.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 15 Eylül 2015 - 14:32:10
exploit arıyordum pure ftp için. :D Neyse, gece tekrar bakarım şimdi iş zamanı görüşmek üzere.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 15 Eylül 2015 - 14:42:10
Vakit bol arkadaslar.Sorun yok.
Tekrar Tekrar soyluyorum.Sunucuya saldirmaniza gerek yok. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 15 Eylül 2015 - 14:46:26
Sunucuya saldırıldığı için o hatayı aldım herhalde.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 15 Eylül 2015 - 14:48:41
saldırıyla ilgisi yok DDOS falan olmadı sonuçta. Ücretsiz hosting ile ilgili olabilir Bandwith limitleri az oluyor genelde.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 15 Eylül 2015 - 14:55:43
10GB Aylik  limiti var. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ulupınar - 15 Eylül 2015 - 15:28:31
Alıntı yapılan: Reverser - 03 Kasım 2014 - 20:34:00
Arkadaşlar merhaba, bu konuyu benim gibi reverse code enginnering hakkında kendini geliştirmek isteyenler için açtım. Planım şu, C programlama bilen arkadaşlar bir program yazacaklar ve kaynak kodunu paylaşmadan sadece derlenmiş .exe formatlı binary dosyayı paylaşacaklar bizde bu executable dosyaları analiz edip, C kodu haline geri çevirip burada paylaşacağız programı yazan kişi de orijinal kodunu paylaşacak ve nasıl bir iş çıkardığımızı göreceğiz.

Şimdi C kodlama bilen birinden bir program yazıp burada paylaşmasını istiyorum umarım yardım etmek isteyen biri çıkar :)

Tersine kod mühendisliği benim anladığım ve bildiğim kadarıyla ikilik koddan kaynak kodu elde etme amacını gütmez. Kaynak kodu bilinmeyen veya elde edilemeyen yazılımların yaptığı işi simüle etmek için kullanılan bir yöntemdir. Amaç benzer görevleri başaran eşdeğer bir yazılım üretmek olunca bunu birebir hangi kodlarla yapıldığı önemli değildir. Tersine kod mühendisliği bu konuda çok dar bir çerçevede ele alınmış. Tersine kod mühendisliğini merak edenler için farklı kaynaklardan bilgi almalarını tavsiye ederim.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 15 Eylül 2015 - 15:48:02
@ulupınar, konunun tamamını incelersen, hangi konuları ele aldığımızı, zamanla nerelere kaymış olduğumuzu görürsün. Konu ilk olarak "Reverse code engineering" adı altında paylaşıldı. Bu da demek oluyor ki, konumuzun ilk zamanlarda güttüğü amaç tersine kod mühendisliğiydi.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ulupınar - 15 Eylül 2015 - 15:55:56
Alıntı yapılan: Reverser - 15 Eylül 2015 - 15:48:02
@ulupınar, konunun tamamını incelersen, hangi konuları ele aldığımızı, zamanla nerelere kaymış olduğumuzu görürsün. Konu ilk olarak "Reverse code engineering" adı altında paylaşıldı. Bu da demek oluyor ki, konumuzun ilk zamanlarda güttüğü amaç tersine kod mühendisliğiydi.

Demek istediğim konunun tersine kod mühendisliğiyle alakası yok, yapmak istediğiniz ile amacınız farklı oluyor bu durumda. Tersine kod mühendisliği iki şekilde yapılır. Birincisi kod zaten bellidir, derlenir çalıştırılır, istenen sonucu vermediği veya yetersiz kaldığı durumlar tespit edilerek var olan kaynak kodda gerekli değişiklikler yapılır, sonuca ulaşır. İkincisi kod elde yoktur, tersine kod mühendisliği ile eşdeğer yazılım kodu tekrar elde edilir.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 15 Eylül 2015 - 16:07:30
@ulupınar, tamam.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 15 Eylül 2015 - 17:38:55
Bu arada arkadaslar bir ricam olacak sizlerden.
Yani cozmeye calisan arkadaslardan.
Lutfen cozum adimlarinizi dosya olustup, ozelden atiniz.
1 hafta sonra aciklanacaktir.Katilan herkese kolayliklar dilerim.
Hediye vermek isterdim ama uzgunum veremiyorum. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 16 Eylül 2015 - 21:17:29
@817c0d3r, çözüldü, anlatımı özelden attım.
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fstorage1.static.itmages.com%2Fi%2F15%2F0916%2Fh_1442427426_8882003_509c50cd87.png&hash=2e8af69ba0b80f0c2b873590cc6d74beff0b5f5c)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 16 Eylül 2015 - 22:43:00
Tebrikler @Reverser.
Ilk olarak cozen sizsiniz.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 17 Eylül 2015 - 16:00:44
İlerleyen saatlere doğru kendi çözüm yöntemimi açıklayan bir video hazırlayacağım.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 17 Eylül 2015 - 16:16:15
Merhaba Arkadaslar;
Katilan herkese tesekkur ederim.
Kaptir da gelimizin(CTF) cozumunu aciklayalim. :)
Oncelikle verilen adrese girdigimizde  yazilimimiz hakkinda biraz  bilgi veriliyor ama yazilim nerede?
Buradan birsey anlamadik kaynak kodlarda bir ipucu var mi? diye bakiyoruz.
O da ne sag tik yapamiyoruz. :) (Kisayol ^U )
Curl ile kodlarimizi inceleyelim.Bakalim neler var.

$ curl http://817c0d3r.uboxi.com/crkm/
<html xmlns="http://www.w3.org/1999/xhtml">
<iframe width="0" scrolling="no" height="0" frameborder="0" vspace="0" hspace="0" marginheight="0" marginwidth="0" src="CRKM/"></iframe>
<style>td {background-color: #1f1f1f; font-family: Courier New; font-size:9pt; color:#33FF33;
border-color: #33FF33;border-width:1pt; border-style:solid; border-collapse:collapse;padding:0pt
................................................................................................

iframe satiri hemen dikkatimizi cekiyor.Diger satirlar da zaten birsey yok.
CRKM kaynagina ulasmaya calisiyor.
Bakalim.

$ curl http://817c0d3r.uboxi.com/crkm/CRKM/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://redirect.main-hosting.com/error404.php/12?domain=817c0d3r.uboxi.com">here</a>.</p>
</body></html>

Pardon. :)

$ curl http://817c0d3r.uboxi.com/CRKM/
LCKDd352e4c823fe6d20a88dbd10f26ea59e.bin#@2B4I
Ð
ß® ­ðý
ð­ð­ðߠ­ïïà¯ßþ­ðßß
ð­ðP
ð­ð
ß
ß­ð@­ð
ß

Bingo :)
Verilen adreste, GDB ile incelenen yazilimin data dosyasina ulastik.
Daha okunabilir bir cikti almak isteyelim ve  strings komutunu ekleyelim.

$ curl http://817c0d3r.uboxi.com/CRKM/ |strings

Ciktisi cok uzun,  dedikten sonra devam edelim. :)
Ciktiya bakinca kafamiz da simsekler cakti galiba :)
Hexdump araci ile yildirimi dusurelim o zaman. :)

$ curl http://817c0d3r.uboxi.com/CRKM/ |hexdump -C
00000000  4c 43 4b 44 01 00 00 00  64 33 35 32 65 34 63 38  |LCKD....d352e4c8|
00000010  32 33 66 65 36 64 32 30  61 38 38 64 62 64 31 30  |23fe6d20a88dbd10|
00000020  66 32 36 65 61 35 39 65  2e 62 69 6e ad 5a 8d 00  |f26ea59e.bin.Z..|
00000030  00 00 00 00 00 00 00 01  0a 98 7d f0 9a 87 d9 8a  |..........}.....|
00000040  7d 09 f8 a7 09 d8 70 a9  8d 7f 9a 87 df 9a df 87  |}.....p.........|
..............................................................................
..............................................................................
000002c0  00 00 00 00 00 00 00 0f  a0 df 00 00 00 01 6c 00  |..............l.|
000002d0  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
000002e0  02 00 03 00 01 00 00 00  b0 80 04 08 34 00 00 00  |............4...|
000002f0  a8 70 00 00 00 00 00 00  34 00 20 00 03 00 28 00  |.p......4. ...(.|
00000300  10 00 0f 00 01 00 00 00  00 00 00 00 00 80 04 08  |................|
00000310  00 80 04 08 7c 67 00 00  7c 67 00 00 05 00 00 00  |....|g..|g......|

..............................................................................
..............................................................................

ELF header gorunce anliyoruz ki,  calistirilabilir dosya.
Hex editor ile ELF header baslangicina kadar olan yerleri silmek yeterli.O zaman ne duruyoruz.
Tabi simdi hex editor gibi uzun islemden kacmak lazim. :)

$ curl http://817c0d3r.uboxi.com/CRKM/ |dd skip=90 bs=8 > CRKM.bin
$ file CRKM.bin
CRKM.bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
$ chmod +x CRKM.bin

Simdi  GDB altinta inceleyelim.

(gdb) > i fil
Symbols from "/home/wolf/CRKM.bin".
Local exec file:
`/home/wolf/CRKM.bin', file type elf32-i386.
Entry point: 0x80480b0
(gdb) > x/12iw 0x80480b0
   0x80480b0: xor    ebp,ebp
   0x80480b2: pop    esi
   0x80480b3: mov    ecx,esp
   0x80480b5: and    esp,0xfffffff0
   0x80480b8: push   eax
   0x80480b9: push   esp
   0x80480ba: push   edx
   0x80480bb: push   0x804d124
   0x80480c0: push   0x8048094
   0x80480c5: push   ecx
   0x80480c6: push   esi
   0x80480c7: push   0x8048190
(gdb) > x/16iw 0x8048190
   0x8048190: sub    esp,0xc
   0x8048193: mov    DWORD PTR [esp],0x804d140
   0x804819a: call   0x8048254
   0x804819f: lea    eax,[esp+0x8]
   0x80481a3: mov    DWORD PTR [esp+0x4],eax
   0x80481a7: mov    DWORD PTR [esp],0x804d149
   0x80481ae: call   0x8049044
   0x80481b3: cmp    DWORD PTR [esp+0x8],0x171717
   0x80481bb: jne    0x80481c6
   0x80481bd: mov    DWORD PTR [esp],0x804d15c
   0x80481c4: jmp    0x80481cd
   0x80481c6: mov    DWORD PTR [esp],0x804d14c
   0x80481cd: call   0x80481d8
   0x80481d2: xor    eax,eax
   0x80481d4: add    esp,0xc
   0x80481d7: ret
(gdb) > x/s 0x804d140
0x804d140: "Parola: "

Evet, bolgemiz burasiymis. :)

   0x80481b3: cmp    DWORD PTR [esp+0x8],0x171717; Girilen deger ile 0x171717'yi karsilastir.
   0x80481bb: jne    0x80481c6 ; Sartlar uygun degilse, Tekrar dene kismina yolla. Yok sartlar uygunsa Oyunu bitir.
(gdb) > x/s 0x804d14c
0x804d14c: "Tekrar Deneyin!"
(gdb) > x/s 0x804d15c
0x804d15c: "Oyun Biter."
(gdb) > b *0x80481b3
Note: breakpoint 1 also set at pc 0x80481b3.
Breakpoint 1 at 0x80481b3
(gdb) > r
Starting program: /home/wolf/CRKM.bin
Parola: 11559977
Breakpoint 1, 0x080481b3 in ?? ()
(gdb) > p/d 0x171717
$1 = 1513239
(gdb) > x/d $esp+0x8
0xffffc668: 11559977

Game over.

$ ./CRKM.bin
Parola: 1513239
Oyun Biter.

Not=> Yarismayi erken bitirdigim icin ozur dilerim.
Bazi sorunlar yuzunden bitirmek zorunda kaldim.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 17 Eylül 2015 - 16:21:38
Ben sitenin kodlarını incelemek için adres çubuğunun başına  view-source:  ekledim, sayılır mı? :D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 17 Eylül 2015 - 16:23:37
Bu yolda hersey mubah. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 18 Eylül 2015 - 01:58:01
Vidyo geldi sıcak sıcak, kusura bakmayacaksınız ama zira bu saatte bu kadar oluyor. :D
[1] http://www.dosya.tc/server3/zy8npz/reverse_me_tut.zip.html
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: oasln - 27 Eylül 2015 - 02:43:55
Öldünüz mü beyler. Bir tane de ben hazırladım: http://s6.dosya.tc/server3/wab37d/sifreyi_bul_01.zip.html

Çok basit değildir umarım :)

Edit: en kisa sifreyi bulan kazanir
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Promethium - 27 Eylül 2015 - 04:29:51
Alıntı yapılan: Reverser - 18 Eylül 2015 - 01:58:01
Vidyo geldi sıcak sıcak, kusura bakmayacaksınız ama zira bu saatte bu kadar oluyor. :D
[1] http://www.dosya.tc/server3/zy8npz/reverse_me_tut.zip.html

Tarayıcıda uygulamalarım yer imini kaldırmak için üstüne sağ tıklayıp kaldırabilirsiniz.. :D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 01 Ekim 2015 - 21:19:30
Ben vaktim varken biraz bakindim yazilima da, asagidaki gibi sifreler buldum.Ornek olmasi acisindan.
Cozen olmamis herhalde. yazilimi.
Hazir yazmisken,  ipucu da vereyim.
Sakin turkce harf kullanmayin. Direk cok buyuksun abi moduna giriyor yoksa .:)

Sifreyi gir:
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Buldun!
**********************************
Sifreyi gir:
AAAAAAAAA1111111111111111111111111
Buldun!

**********************************
Sifreyi gir:
HHHHHHH1111111111
Buldun!

Siz artik cogaltirsiniz. :)
Hadi bir tane de daha da kisa sifresini  yazayim.

Sifreyi gir:
qqHH
Buldun!
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: oasln - 02 Ekim 2015 - 12:05:47
Tebrikler 817c0d3r. Çok da zor değildi aslında :) Sözde biraz daha zormuş gibi yazmıştım da yaptığım bir mantık hatası nedeniyle neredeyse sonsuz sayıda geçerli şifre var :) Program şuydu:

use std::io;
use std::cmp::Ordering;

fn main() {
    println!("Sifreyi gir: ");
    let mut guess = String::new();
    io::stdin().read_line(&mut guess).unwrap();
    let mut acc = 0;
    for &b in guess.trim().as_bytes() {
        let b = (b as u32) - 48;
        match b {
            2 => acc /= b,
            5 => acc *= b,
            _ => acc += b
        }
    }

    match acc.cmp(&178) {
        Ordering::Less    => println!("Çok küçük!"),
        Ordering::Greater => println!("Çok büyük!"),
        Ordering::Equal   => println!("Buldun!"),
    }

}


Bir de şifre üretici yazdım, 3 karakterli geçerli (bazı) şifreler: https://ideone.com/cMT9pd

Sadece match ve integrated testleri kullanmış olsam da rust'a aşık oldum.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 02 Ekim 2015 - 12:34:34
Ben aslinda isteksiz olarak incelemeye aldim(zaman sorunu) ama. Sonra rust dilinde oldugunu gorunce sasirdim.Ilginc bir inceleme olacak dedim(ilgim artti birden) ama.Cok basit cikti. :)

$ ./sifreyi_bul_01.zip
Sifreyi gir:
-1
thread '<main>' panicked at 'arithmetic operation overflowed', sifreyi_bul_01.rs:17
$ ldd sifreyi_bul_01.zip
linux-vdso.so.1 (0x00007ffefa555000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f5630b16000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f56308f9000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f56306f1000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f56304db000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f5630137000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5630d1a000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f562fe39000)

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: oasln - 02 Ekim 2015 - 17:35:21
Neyse artık bir dahaki sefere daha iyisini denerim :p
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 24 Ekim 2015 - 14:23:41
Merhaba arkadaslar,
Konuya hareketlilik gelmesi adina, crackme paylasiyorum.
Vakti olan arkadaslara biraz meskale olmasi adina.


$ ./crackme2
UYARI: Icinden gecicem senin derken, gereksiz bolumlere takilmayin! :)
Kullanici: wolf
Parola   :

Cozmeye calisanlara kolay gelsin diyerek.Yontemlerinizi cekinmeden aciklayabilirsiniz. :)
Iyi sanslar.

http://s3.dosya.tc/server5/9c2vvt/crackme2.zip.html (http://s3.dosya.tc/server5/9c2vvt/crackme2.zip.html)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 14 Kasım 2015 - 17:12:26
Sanirim ipucu vermek lazim.
Verilen 2 grafik, donen dolabi anlatmakta :)
https://ptpb.pw/-YGa
https://ptpb.pw/eEqD

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 16 Kasım 2015 - 19:40:17
Ilk programin sifresini paylasayim.Cozem olmazsa ikincisinde cozum yontemini paylasarim.
1.programin sifresi
1. karakter= w
2. karakter= Herhangi bir karakter olabilir.
3. karakter= o
4. karakter= Herhangi bir karakter olabilir.
5. karakter= l
6. karakter= Herhangi bir karakter olabilir.
7. karakter= f
Sonuc:

UYARI: Icinden gecerken, gereksiz bolumlere takilmayin! :)
Kullanici: wolf
Parola   : w0o1lFf
Bravoo dogru sifre :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: neynefes - 16 Kasım 2015 - 23:56:51
Epeydir sessiz burası :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 17 Kasım 2015 - 20:51:18
@neynefes, evet cok sessiz kaldi bence de :) ama sorun degil.Sonucta zaman meselesi.
Bu arada, 2'inci yazilimda ufak bir kodlama hatasi yapmisim. :)
O yuzden yeni yazilimi paylasiyorum.
wget https://ptpb.pw/Wpfq -O CrackmeGUI
ama merak edenler yada indirenler icin cozumu paylasayim. Hemde bir ipucu olsun. Biraz zorluyorum herhalde:)
sed 's/\x38\xc1/\x38\xc0/' CrackmeGUI > CrackmeGUI_OK
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 17 Kasım 2015 - 23:40:21
yine coşmuş buralar :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: neynefes - 17 Kasım 2015 - 23:41:54
Yok yok eski canlılığı kalmamış :D  Nerde o eski reverser'lar :D

Şaka yapıyorum alınmayın lütfen ;)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 17 Kasım 2015 - 23:59:00
bu da benden gelsin -> [1] http://s6.dosya.tc/server4/1jy3q5/craxme.zip.html
istenen: reversed source code <3
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ata1 - 18 Kasım 2015 - 00:02:49
bende mi hata oldu içi boş geldi  ;D yeniden indireyim
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 18 Kasım 2015 - 00:05:30
@eral, hata değil uzantısına takılma direkt "./craxme.zip" şeklinde çalıştır. (dosya.tc sunucusuna kandırık atıyoruz ehe ehe.)
konu hakkında şu mesajımdan sonraki kısımı okuyarak bilgi alabilirsin -> [1] https://forum.ubuntu-tr.net/index.php?topic=45477.msg552701#msg552701
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ata1 - 18 Kasım 2015 - 00:19:11
bugün bende mi sistemdemi acayiplik var yav
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2Fo9MlYR.png&hash=5e1133211771d7a29f6f943d845cc0adec2b4f46) (http://hizliresim.com/o9MlYR)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 18 Kasım 2015 - 00:23:42
sisteminde sıkıntı yok @eral, bir önceki mesajımda belirttim neden o şekilde olduğunu.
konsoldan aşağıdaki şekilde çalıştırabilirsin tabii önce chmod execute izni vermelisin.
./craxme.zip
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ata1 - 18 Kasım 2015 - 00:29:53
[root@ata Belgeler]# ./craxme.zip
bash: ./craxme.zip: Erişim engellendi
[root@ata Belgeler]#


╔═[00:29]═[ata@ata]
╚═══===═══[]>> ./craxme.zip
bash: ./craxme.zip: Böyle bir dosya ya da dizin yok


bana acemi gibi anlat benim kafa durmuş sanırım  ;D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 18 Kasım 2015 - 00:32:06
haydaa :D
chmod +x ./craxme.zip
./craxme.zip
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ata1 - 18 Kasım 2015 - 00:33:27
╔═[00:32]═[ata@ata]
╚═══===═══[]>> chmod +x ./craxme.zip
chmod: `./craxme.zip''e erişilemedi: Böyle bir dosya ya da dizin yok
bir tuhaflık bende var sanırım çay içmedim ya laz aklı duruyor  :))

[root@ata Belgeler]# chmod +x ./craxme.zip
[root@ata Belgeler]# ./craxme.zip
[root@ata Belgeler]#


buldum belgelerime kaydedilmiş dosya  ;D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 18 Kasım 2015 - 00:58:06
tamam şimdi kaynak kod halini alayım. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ata1 - 18 Kasım 2015 - 00:59:14
Ahmet Bora 35 190  ;D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 18 Kasım 2015 - 01:01:04
o çıktıyı veren işleyişin ASM dışındaki kod halini istiyorum.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 18 Kasım 2015 - 03:18:23
Hazir hareketlenmis, buralar.
Ben de bir tane, zor paylasim da bulunayim :)
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2Fp9QD8a.png&hash=acdc252f33fa89775964c34cdf21b1abc5dcdc61) (http://hizliresim.com/p9QD8a)
Indir (http://s3.dosya.tc/server6/1lhp57/TersineKodla.zip.html)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 18 Kasım 2015 - 03:58:47
Severek takip ediyoruz :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 18 Kasım 2015 - 14:49:05
Assembly'i az çok öğrendikten sonra bende konuya dail olmaya çalışırım. Şu anda Assembly bilğim çok az..
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 18 Kasım 2015 - 19:36:31
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FrRbrzM.png&hash=6e34d72a10b0830a5085c25d272e64ecd60756b8) (http://hizliresim.com/rRbrzM)

:-\
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 19 Kasım 2015 - 01:06:24
@betseg'in aldığı uyarıyı ben de alıyorum. Henüz inceleme fırsatı bulamadım fakat vardır muhtemelen bir olayı. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 19 Kasım 2015 - 20:52:31
Benim paylastigim yazilimin, eksik olan dinamik kutuphanelerini, ldd komutu ile gorebilirsiniz.Verilen goruntude ki dinamik kutuphanenin adreslerini ben paylasayim.
Malumunuz Apple kodlarini acmis bulunmakta. :)
https://opensource.apple.com/tarballs/CF/CF-855.17.tar.gz (https://opensource.apple.com/source/CF/CF-855.17/)
Bu da github adresinde ki paylasim.
https://github.com/fjolnir/CoreFoundation-Lite-Linux (https://github.com/fjolnir/CoreFoundation-Lite-Linux)
Bu arada benim icin fark etmez. ASM kodlarini da paylasabilirsiniz. Tabi calistirilabilir haline getirebilelim ama :)
Ornek olarak ben bir kac kismini paylasayim.

        mov     ecx, 10
        mov     edi, 1
        xor     eax, eax
        call    printf
        lea     rsi, [rel _OBJC_SELECTOR_TABLE]
        lea     rdi, [rel _OBJC_INSTANCE_0]
        call    objc_msg_lookup
        lea     rsi, [rel _OBJC_SELECTOR_TABLE]
        lea     rdi, [rel _OBJC_INSTANCE_0]

_OBJC_SYMBOLS:
        dq _OBJC_SELECTOR_TABLE
        dq 0000000000000000H
        dq _OBJC_STATIC_INSTANCES

_OBJC_SELECTOR_TABLE:
        dq _OBJC_METH_VAR_NAME_0
        dq _OBJC_METH_VAR_TYPE_0
        dq 0000000000000000H
        dq 0000000000000000H

Buna benzer :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 19 Kasım 2015 - 21:17:33
Ld_preload ?  :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 19 Kasım 2015 - 21:36:27
@Reverser, Github adresindekini yada digerini derlerseniz.Zaten Dinamik kutuphaneyi olusturmakta. :)

% sudo make -f MakefileLinux install

This will create and install these files:

/usr/local/lib/libCoreFoundation.so
/usr/local/include/CoreFoundation/<header files>
/usr/local/include/TargetConditionals.h
/usr/local/share/CoreFoundation/<resource files>
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 19 Kasım 2015 - 23:12:07
@817c0d3r, hocam henüz inceleme fırsatı bulamadım mobilden fikir yürüttüm sadece. Bu arada benim paylaştığım dosya ile ilgilenen oldu mu ?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 19 Kasım 2015 - 23:14:21
Alıntı yapılan: betseg
Üstteki seninki. Böyle demesi normal mi?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 19 Kasım 2015 - 23:17:08
dosyada sorun yok.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 26 Kasım 2015 - 19:05:55
Ugrasmak isteyenlere bir krekle_beni ekleyim. :)
Olabildigince basit yapmaya calistim. :)
http://www.dosya.tc/server5/g4zne2/crackme_409.zip.html (http://www.dosya.tc/server5/g4zne2/crackme_409.zip.html)
Calistirma:
(https://ptpb.pw/lSIl)
Cozum yonteminizi cekinmeden aciklayabilirsiniz!
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ginraj - 27 Kasım 2015 - 13:36:34
Bu konuya girmek istemiyorum. Bilenler zadece bizimle gönül eğlendiriyor. Bilmiyoruz diye bize hava atıyorlar. [emoji4] (Anne bizde niye yok [emoji1] ) şaka bir yana hazır burada toplanmışsınız ayrı bir başlık altında temelden başlanarak anlatım yapılabilir. Birde nasıl yaptıklarını ayrıntılı yazsalar veya görsel olarak anlatsalar bizde faydalanabiliriz.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: rutku - 27 Kasım 2015 - 14:04:15
Aynen  ;D şöyle konular güzelce toparlansa anlatılsa ne güzel olur. Hatta hazır kaynaklar gösterilerek hiç yoktan gidiş yolumuzu görebilsek çok iyi olur  :D. Hiç yoktan bir nesli cracker yaparız. Oyun oynamaktan boş dolaşmaktan kurtarırız :D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 27 Kasım 2015 - 14:21:22
@yguzel, vakti zamanında konuyu açtığımda asıl amacım zaman geçirmek ve oyalanmaktı açıkcası daha sonradan gelen istekler üzerine, anlatmayı ve açıklamayı denedik fakat katılım olmadı. Bir yerde anlatım için zaman harcayıp, ilgi göremedik de denebilir.
@c0d3r hocam, biraz yavaşlayalım bence daha ilk attıklarınız ve benim son attığım dosya duruyor ve tekrar ediyorum, seviyeyi biraz daha düşük tutalım.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 27 Kasım 2015 - 14:40:29
Alıntı yapılan: Reverserseviyeyi biraz daha düşük tutalım.
+1
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 27 Kasım 2015 - 14:48:19
Alıntı yapılan: rutkuAynen  şöyle konular güzelce toparlansa anlatılsa ne güzel olur. Hatta hazır kaynaklar gösterilerek hiç yoktan gidiş yolumuzu görebilsek çok iyi olur  . Hiç yoktan bir nesli cracker yaparız. Oyun oynamaktan boş dolaşmaktan kurtarırız
Katılıyorum :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: neynefes - 27 Kasım 2015 - 15:32:06
Videolu bir anlatım da vardı sanırım yanlış hatırlamıyorsam.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 27 Kasım 2015 - 15:54:59
Aynen videolu anlatım da yapmıştık.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ata1 - 27 Kasım 2015 - 16:34:00
Alıntı yapılan: Reverser - 27 Kasım 2015 - 15:54:59
Aynen videolu anlatım da yapmıştık.

hani nerede  ;D yaaa arkadaş nasıl  bir forum yönetimisiniz. hala forum arama seçkesi sorunu var.  ;D davacıyım  :o
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: rutku - 27 Kasım 2015 - 17:21:19
Şuana kadar konuya 482 mesaj atılmış  ;D. Gayette bilgi birikmiştir. İşe yarayacak olanları toparlayıp sonrada düzeltmek gerek. Zaten ülkemizde bu denli crack mevzularına derinlemesine girildiğini düşünmüyorum. Ortaya bir başyapıt çıkarsa siteye yeni bir kitle katılmış olur. Bileni bilmeyeni burayı takip eder.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 27 Kasım 2015 - 17:23:16
Alıntı yapılan: rutkuŞuana kadar konuya 482 mesaj atılmış  . Gayette bilgi birikmiştir. İşe yarayacak olanları toparlayıp sonrada düzeltmek gerek. Zaten ülkemizde bu denli crack mevzularına derinlemesine girildiğini düşünmüyorum. Ortaya bir başyapıt çıkarsa siteye yeni bir kitle katılmış olur. Bileni bilmeyeni burayı takip eder.
Zaten konu altinda kaynak bile verilmis..
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: rutku - 27 Kasım 2015 - 18:31:07
Alıntı yapılan: nurullahisrgan - 27 Kasım 2015 - 17:23:16
Alıntı yapılan: rutkuŞuana kadar konuya 482 mesaj atılmış  . Gayette bilgi birikmiştir. İşe yarayacak olanları toparlayıp sonrada düzeltmek gerek. Zaten ülkemizde bu denli crack mevzularına derinlemesine girildiğini düşünmüyorum. Ortaya bir başyapıt çıkarsa siteye yeni bir kitle katılmış olur. Bileni bilmeyeni burayı takip eder.
Zaten konu altinda kaynak bile verilmis..

Verilmişse ne olmuş ? Mesajdan mesaja atlamak yerine madde madde okumak daha iyi olmazmı ?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 27 Kasım 2015 - 18:40:11
Alıntı yapılan: rutkuAlıntı yapılan: nurullahisrgan - Bugün, 17:23:16Alıntı yapılan: rutkuŞuana kadar konuya 482 mesaj atılmış  [img width=15,height=15]https://forum.ubuntu-tr.net/Smileys/default/grin.gif[/img]. Gayette bilgi birikmiştir. İşe yarayacak olanları toparlayıp sonrada düzeltmek gerek. Zaten ülkemizde bu denli crack mevzularına derinlemesine girildiğini düşünmüyorum. Ortaya bir başyapıt çıkarsa siteye yeni bir kitle katılmış olur. Bileni bilmeyeni burayı takip eder. Zaten konu altinda kaynak bile verilmis..
Verilmişse ne olmuş ? Mesajdan mesaja atlamak yerine madde madde okumak daha iyi olmazmı ?
Elbette olabilir..
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 27 Kasım 2015 - 23:16:48
evet, @rutku konu altında bilgiler mevcut fakat arkadaşlar biraz üşeniyorlar okumaya sanırım. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 28 Kasım 2015 - 00:44:30
Okumakta sıkıntı yok hocam sıkıntı kaynakların ıngılızce olması :D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: ginraj - 28 Kasım 2015 - 15:38:43
@Reverser aslında demek istediğim ayrı bir konu altında temelden baslanarak eğitim verilmesi. Sizin için zor olacağını düşünmüyorum çünkü konuya hakimsiniz başlangıç eğitimi verdikten sonra bu crack me dosyalarınız daha çok kişi tarafından incelenecektir ve katılım oranı daha yüksek olacaktır
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: neynefes - 28 Kasım 2015 - 15:54:42
İşin zorluğu anlatım değil, o anlatımı yapacak vaktin bulunmayışı. @reverser adına konuşuyorum ama muhtemel sebeplerden biri bu.
Başlık: Ynt: Tersine kod muhendisligi
Gönderen: 7hr33l3t73r - 28 Kasım 2015 - 18:34:43
Alıntı yapılan: Reverser - 10 Mart 2015 - 00:35:48
Bana kalırsa seviyeli yapalım en basitten başlayalım. Hello world falan değil de, matematiksel işlemler, döngüler temel compare işlemi jumplar gibi.. ?
@Reverser, Simdi son yorumunuz uzerine kendi paylastigim crackmeleri ele alayim.Basit mi? Zor mu? karar verelim.
Crackme2, yazilimi ile baslayalim.
https://ptpb.pw/-YGa (https://ptpb.pw/-YGa)
https://ptpb.pw/eEqD (https://ptpb.pw/eEqD)
verilen resimlerde goruldugu gibi karsilastirma var.
CrackmeGUI, yazilimda ise jump olayi var ve goruntu de sanirim herseyi anlatiyor.
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2Fo8rl57.png&hash=c1591caef4373d3d746cf5bc2ec65c44747e33a4) (http://hizliresim.com/o8rl57)
Ve geleim crakme_409 yazilimina.
objdump cikti bile yeterli cozmek icin.
1000 ^ 1 = 4097
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FLg10L1.png&hash=fe82f9aae2c9b865d785562ecce336aa95ec87cc) (http://hizliresim.com/Lg10L1)
Simdi ben sizin soylediklerinizin disinda birsey yapmismiyim. :)
Farkli seyler paylasmamda ki amac ise ugrasacak arkadaslarin. Farkli yontemler gordukleri zaman da kafalarinin karismamasi.
En buyuk sorunlardan biri de bu sanirim.Okulda da boyle olmuyor mu?.Baktiginiz zaman bildiginiz birsey aslinda ama farkli bir yontem yada sistem kullanildiginda, biz bunlari gormedik diyebiliyoruz.Aslinda bildigimiz birsey.Sadece dikkat lazim.Mantigi anlamak lazim.Konuyu katilanlarin da temel seviye bilgilerinin oldugunu varsayiyorum.Ki biz burada egitim vermiyoruz.Is egitim kismina girerse.Ben hoca degilim.Bu kelimeyi aliskanlik olrak kullaniyorum bazen.Karsimdaki nin hoca olamasina gerek. Aliskanlik gibi birsey :). Egitim verecek kapasite de ve zaman da degilim ayrica.Ben kendim abimden teknik destek ve egitim alirken.Bura da egitim vermem tuhaf olurdu herhalde.Okul bile bir yere kadar.Ondan sonrasi bizim elimizde.Kendimizi ilerletmek, gelistirmek.Brans secmek.Uzmanlasmal vs diye uzar gider @Reverser hocam :)
Simdi paylasilan yazilimlarda bilmediginiz birsey var mi?
karsilastirma. atlama ve xor disinda.
Nasil yazilim paylasmak lazim.Debug mod ile derleme yapalim.Anlamadigimiz noktada gdb uzerinde layout src komutunu verelim.Kaynak kodlari mi gorelim.Ya da Hopper, IDA gibi yazilimlarin sozde kod olusturma butonuna basalim, sifre ve kaynak kodlar karsimiza mi? ciksin.Yazilimlari buraya da paylasmadan once inanin, mumkun oldugunca basit yapmaya calisiyorum ve basit yaptigimi dusunuyorum.Bana sunu diyebilirsiniz.Ya arkadasim son paylastigin yazilim.ARM.Ben bunu nasil calistiracam ki bunu bile resimde veriyorum.Ki ilk olarak static linkledim.Calistimaniz kolay olsun diye.Sonra fonksiyonu bulmak zor olabilir dedim.Sonucta farkli bir yapi.Yazilimi tekrar derlledim ve resim ile paylastim.Simdi elestirilerinizi seviyeli bir sekilde alabilirim.
Zor olan nedir!?
sifreleme,pack, anti debug gibi tekniklere zaten girmeyi dusunmuyorum.Kendimin bile, isin icinden cikabilecegine inanmiyorum.He bir artim var. Sadece teknik yardim alacagim  biri var. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 28 Kasım 2015 - 23:10:31
@817c0d3r hocam, benim de bilgim bu konuda sınırlı maalesef ki. Yeri geliyor takılıp kalıyor, ilerleyemiyorum...
Bir önceki iletimde belirtmek istediğim şey ise "seviyeyi bu konuya yeni başlayanların anlayabileceği seviyede tutmaktı."
@neynefes sağ olsun belirtmiş. Bir de ben belirteyim, işlerim yıl sonu nedeniyle fazlasıyla yoğun bu nedenle fazla vakit bulamıyorum ve açıkçası son paylaştığınız dosyaları henüz incelemedim.
@yguzel, kullanıcı adımın aksine öyle bir iddiam yok. Bu konu hakkında yaptığım çalışmalar, tamamen okuduğum kaynakların ve yazılım bilgimin ortaya çıkarttığı şeylerden ibaret bu nedenle eğitim vermek haddime olmaz, en fazla bildiklerimi paylaşırım o kadar.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 01 Aralık 2015 - 19:32:27
Arkadaşlar merhaba, boş zamanımda videolu anlatım yaptım umarım beğenirsiniz.
Konu: Hooking function with LD_PRELOAD trick
[1] http://www.dosya.tc/server5/kryq29/record.mp4.html






Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: rutku - 02 Aralık 2015 - 00:37:49
Acemiler için kod tersine anlatımı buldum arkadaşlar. Kaynak ingilizce bir yere kadar linux ile devam edilebilir gibi geliyor. Çünkü ileri seviyesi zararlı yazılım geliştirme üzerine kurulu. İnternet sıkıntısı olduğu için deneyemiyorum. İçerik;
Alıntı YapYou can download the complete series direct from Tuts 4 You if you do not wish to download the files individually.

01. Olly + assembler + patching a basic reverseme
02. Keyfiling the reverseme + assembler
03. Basic nag removal + header problems
04. Basic + aesthetic patching
05. Comparing on changes in cond jumps, animate over/in, breakpoints
06. "The plain stupid patching method", searching for textstrings
07. Intermediate level patching, Kanal in PEiD
08. Debugging with W32Dasm, RVA, VA and offset, using LordPE as a hexeditor
09. Explaining the Visual Basic concept, introduction to SmartCheck and configuration
10. Continued reversing techniques in VB, use of decompilers and a basic anti-anti-trick
11. Intermediate patching using Olly's "pane window"
12. Guiding a program by multiple patching.
13. The use of API's in software, avoiding doublechecking tricks
14. More difficult schemes and an introduction to inline patching
15. How to study behaviour in the code, continued inlining using a pointer
16. Reversing using resources
17. Insights and practice in basic (self)keygenning
18. Diversion code, encryption/decryption, selfmodifying code and polymorphism
19. Debugger detected and anti-anti-techniques
20. Packers and protectors : an introduction
21. Imports rebuilding
22. API Redirection
23. Stolen bytes
24. Patching at runtime using loaders from lena151 original
25. Continued patching at runtime & unpacking armadillo standard protection
26. Machine specific loaders, unpacking & debugging armadillo
27. tElock + advanced patching
28. Bypassing & killing server checks
29. Killing & inlining a more difficult server check
30. SFX, Run Trace & more advanced string searching
31. Delphi in Olly & DeDe
32. Author tricks, HIEW & approaches in inline patching
33. The FPU, integrity checks & loader versus patcher
34. Reversing techniques in packed software & a S&R loader for ASProtect
35. Inlining inside polymorphic code
36. Keygenning
37. In-depth unpacking & anti-anti-debugging a combination packer / protector
38. Unpacking continued & debugger detection by DLL's and TLS
39. Inlining a blowfish scheme in a packed & CRC protected dll + unpacking Asprotect SKE 2.2
40. Obfuscation and algorithm hiding

https://tuts4you.com/download.php?view.2876
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 02 Aralık 2015 - 00:47:35
bu kaynağı daha önce incelemiştim anlatım güzel fakat olly ile birlikte Windows üzerinden gidiliyor. Windows için kaynak isteyen varsa yabancı birini referans olarak verebilirim çok güzel makaleleri var reverse code engineering konusunda.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: rutku - 02 Aralık 2015 - 00:54:57
Birde reddit  (https://www.reddit.com/r/ReverseEngineering)sayfasını takip etmenizi öneririm. Çok uçuk projeler var. Ne bulurlarsa kaynak kodunu açıyorlar. Bir de pythonda hello world yazısını çözülemeyecek hale sokanda var. Obfuscating diyorlar onada.

Adım adım anlatmış. (https://benkurtovic.com/2014/06/01/obfuscating-hello-world.html)

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 20:19:22
Tekrar Merhabalar;
Bu sefer ki yazilimimiz cok basit.
Yazilimi cozdugunuz zaman, kaynak kodlarina da ulasabileceksiniz.
Indir (http://s3.dosya.tc/server6/x6kd4g/crackme-example.zip.html)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 21:07:00
Bu hata bunda da var, neden? :D
$ ./craxme.zip ; echo $?
bash: ./craxme.zip: No such file or directory
127
$ bash ./craxme.zip ; echo $?
./craxme.zip: ./craxme.zip: cannot execute binary file
126
$ ./crackme-example ; echo $?
bash: ./crackme-example: No such file or directory
127
$ bash ./crackme-example ; echo $?
./crackme-example: ./crackme-example: cannot execute binary file
126
$ file craxme.zip 
craxme.zip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=3663bb5dc70567b81017dd5a3ddf1c1caa34012d, stripped
$ file crackme-example 
crackme-example: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, stripped

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 21:12:50

sh -c crackme-example

ile deneyin  :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 21:20:50
$ sh -c ./crackme-example ; echo $?
sh: ./crackme-example: No such file or directory
127
$ sh -c crackme-example ; echo $?
sh: crackme-example: command not found
127
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 21:25:25
Dosya yok diyor?

chmod +x crackme-example

?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 21:26:29
Zaten izin var.
$ ls -l
total 72K
-rwxr-xr-x 1 arda arda  30K Oct 24 14:29 crackme2.zip
-rwxr-xr-x 1 arda arda 3.9K Dec  4 20:12 crackme-example
-rwxr-x--x 1 arda arda 5.5K Nov 18 19:31 craxme.zip
-rwxr-x--x 1 arda arda  13K Nov 18 19:31 TersineKodla.zip

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 21:43:11
ldd crackme-example
?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 21:47:04
   not a dynamic executable
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 21:49:36
echo $LD_LIBRARY_PATH
?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 21:52:42
Çıktı yok.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 21:57:31
O zaman export'dan sonra tekrar calistirmayi dene?
export LD_LIBRARY_PATH=/usr/lib/
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 22:00:09
$ export LD_LIBRARY_PATH=/usr/lib/
$ ./crackme-example ; echo $?
bash: ./crackme-example: No such file or directory
127
$ echo $LD_LIBRARY_PATH
/usr/lib/
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 22:16:29
64 bit sistem icin asagidaki yazilimi kullanin.
ayrica wiki'yi inceleyin.
https://wiki.archlinux.org/index.php/Multilib
http://www.dosya.tc/server5/rwcy4j/crackme-example64.zip.html
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 04 Aralık 2015 - 22:23:19
lib32-glibc mi kurayım yani?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 04 Aralık 2015 - 22:29:17
Evet multilib-devel paketlerini kur..Ayrica LD_LIBRARY_PATH kontrolu yapin.
/usr/lib32
ekli mi? diye.



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Aralık 2015 - 12:25:13

Crakme yazilimi icin biraz bilgi ekleyim.
Sifre 2 basamakli bir sayi?
Ayrica  crackme yazilimlari icin sifreyi bulmanin disinda akisi degistirerek de cozmumunuz kabul edilecektir.(74. 75 karsi gibi :) )
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 05 Aralık 2015 - 12:43:28
Alıntı yapılan: 817c0d3rEvet multilib-devel paketlerini kur..Ayrica LD_LIBRARY_PATH kontrolu yapin.
Kod: [Seç]/usr/lib32
ekli mi? diye.



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Bugün, 12:25:13Crakme yazilimi icin biraz bilgi ekleyim.
Sifre 2 basamakli bir sayi?
Ayrica  crackme yazilimlari icin sifreyi bulmanin disinda akisi degistirerek de cozmumunuz kabul edilecektir.(74. 75 karsi gibi )
Artik bu aksam bunun uzerinde ugrasmayi deneyecegim, bakalim bilgilerim ne kadarmis?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 05 Aralık 2015 - 12:52:05
@nurullahisrgan, cok kolay emin olabilirsiniz.Iki sayinin toplami sifre?
Strippped olusu zorluyorsa, ipucu da verebilirim!
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 05 Aralık 2015 - 14:04:22
Alıntı yapılan: 817c0d3r@nurullahisrgan, cok kolay emin olabilirsiniz.Iki sayinin toplami sifre?
Strippped olusu zorluyorsa, ipucu da verebilirim!
Dosyayı indirdim, şuan müsait olmadığım için inceleyemiyorum..
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 05 Aralık 2015 - 14:13:29
@817c0d3r, öyle bir şifre yapmışsın ki rastgele bir şey deneyeyim derken doğru şifre geldi :D

Neyse ders çalışırken aklıma böyle bir şey geldi: http://s3.dosya.tc/server6/okxb0x/a14.zip.html (http://s3.dosya.tc/server6/okxb0x/a14.zip.html)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 05 Aralık 2015 - 14:16:16
Tebrikler :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: blackwidow - 09 Aralık 2015 - 15:30:54
Beyler konu 20 sayfayı geçti .

Bu konuda bilgisi olan arkadaşlar gruptaki diğer arkadaşlar için basit 10-15 sayfalık tutorial pdf 'i yazmayı düşünürler mi ?

konudaki girdileri okuyup takip ediyorum en basit şekli ile


int main(int argc, char const *argv[])
{
/* code */
printf("merhaba forum\n", );
return 0;
}


şu koddan başlayıp daha karışık matematik işlemlerinin yapıldığı c programlarına nasıl tersine mühendislik yapılır bu konuda rehber pdf i yayınlamayı düşünürlerse çok sevinmiş olurum , bunun bana ve bu işe yeni girecek diğer arkadaşlara katkısı olacağı şüphesiz

Kolay gelsin.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 09 Aralık 2015 - 15:57:22
Alıntı yapılan: blackwidowBeyler konu 20 sayfayı geçti .

Bu konuda bilgisi olan arkadaşlar gruptaki diğer arkadaşlar için basit 10-15 sayfalık tutorial pdf 'i yazmayı düşünürler mi ?

konudaki girdileri okuyup takip ediyorum en basit şekli ile

Kod: [Seç]int main(int argc, char const *argv[])
{
   /* code */
   printf("merhaba forum\n", );
   return 0;
}

şu koddan başlayıp daha karışık matematik işlemlerinin yapıldığı c programlarına nasıl tersine mühendislik yapılır bu konuda rehber pdf i yayınlamayı düşünürlerse çok sevinmiş olurum , bunun bana ve bu işe yeni girecek diğer arkadaşlara katkısı olacağı şüphesiz

Kolay gelsin.
+++++
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 09 Aralık 2015 - 16:01:16
iyi o halde, kısıtlı zamanım olmasına karşın bu konu hakkında bildiklerimi içeren bir pdf yazı dizisi oluşturmaya çalışacağım.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Amenofis - 09 Aralık 2015 - 16:03:38
Alıntı yapılan: blackwidow - 09 Aralık 2015 - 15:30:54
Beyler konu 20 sayfayı geçti .

Bu konuda bilgisi olan arkadaşlar gruptaki diğer arkadaşlar için basit 10-15 sayfalık tutorial pdf 'i yazmayı düşünürler mi ?

konudaki girdileri okuyup takip ediyorum en basit şekli ile


int main(int argc, char const *argv[])
{
/* code */
printf("merhaba forum\n", );
return 0;
}


şu koddan başlayıp daha karışık matematik işlemlerinin yapıldığı c programlarına nasıl tersine mühendislik yapılır bu konuda rehber pdf i yayınlamayı düşünürlerse çok sevinmiş olurum , bunun bana ve bu işe yeni girecek diğer arkadaşlara katkısı olacağı şüphesiz

Kolay gelsin.

Tersini becermek için önce düzünü öğrenmek lazım. x86 programming manual herhalde en iyi başlangıç noktasıdır. 3-5 sayfalık ders ile sonuç alınacağını zannetmem.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 09 Aralık 2015 - 17:04:16
Tersine kod mühendisliği için iyi bir Assembly ve C bilgisi gerekir.. Gerçekten de birkaç sayfalık belge ile ancak giriş yapılabilir..
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 12 Aralık 2015 - 02:54:13
@begseg;
Sizin paylastiginiz yazilimin ustunden, yeterince zaman gecmis.Sanirim cozen de olmayacak herhalde.
Ben a14.zip olarak gorunce acikcasi indirmekten vazgecmistim. :(
Yine istenen C yada diger dillere cevirmek zannetmistim. :)
Bu gece bir  bakayim dedim.Neler var diye.Sonra ne goreyim, crackme cikti karsima.
Inceledim ve Sonuclari asagida.
Sanirim C kodlari asagi yukari asagida ki gibi :)

/*
*
================================================================================
*
*       Filename:  a14.c
*        Created:  12/12/2015 02:20:35 AM
*       Compiler:  gcc
*
*
================================================================================
*/
#include <stdio.h>
    int main(int argc, char *argv[])
    {
        int input;
        printf("Sifre pl0x: ");scanf("%d",&input);
            if ( 9 * input / 5 + 32 == 5 * ((input - 32) / 9) )
                printf("Evet\n");
            else
                printf("Hayir\n");
        return 0;
}

Sifresi de  690262560. Sifreyi bulmadan gecmek icin ise asagidaki komut yeterli.

$ sed 's/\x75\x0c/\x74\x0c/' a14.zip > a14_ok

Benim paylastigim yazilimin da sifresi: 99'du sadece.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 12 Aralık 2015 - 03:39:08
@8100d1r0n hocam bu verdiginiz sifreyi 690262560  burdaki denkleme koyunca uyusmuyor ( 9 * input / 5 + 32 == 5 * ((input - 32) / 9) ) :)  Sacmalıyormuyum yoksa :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 12 Aralık 2015 - 03:47:33
:) calistirabilirsiniz.Input degerini degistirseniz hayir cevabini alirsiniz zaten.

#include <stdio.h>
    int main(int argc, char *argv[])
    {
        int input= 690262560;
        printf("Sifre pl0x: ");//scanf("%d",&input);
            if ( 9 * input / 5 + 32 == 5 * ((input - 32) / 9) )
                printf("Evet\n");
            else
                printf("Hayir\n");
        return 0;
}

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 12 Aralık 2015 - 03:54:11
:D Ama şimdi if ( 9 * input / 5 + 32 == 5 * ((input - 32) / 9) ) burda input degiskenine atama operatoru kullanmamısız yaptıgımız ıslemler neden ınputa atanıyor :S
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 12 Aralık 2015 - 05:10:19
Tamsayi tasmasi(integer overflow) google da aratirsaniz size yerince bilgi sunacaktir.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 12 Aralık 2015 - 08:21:25
Ben o sayıyı -40 olarak şeyetmiştim :) İnsan bir konuda iyi olunca basit şeylere bakmayıp karmaşığa dalıyor demek ki :)

O denklemler de Celsius ve Fahrenheit çevirisi, -40 Celsius ve -40 Fahrenheit aynı. Her şeye unsigned bakmayın :P
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 12 Aralık 2015 - 18:27:15
Insan bos kalmaya gorsun.Ibini dibini kurcaliyor yazilimin. :)
Google amcadan yararlanmistim ben ama sonra olay farkli noktalara kaydi. :)
Bu yolda dedigim gibi hersey mubah. :)
Bos zamanim da ugrastigim bir CTF (https://www.youtube.com/watch?v=4g7-qk3Os9k) oyununda da farkli bir yol izlemistim.Zip dosyasinin sifre kismininla ugrasmamistim. :) Kisaca zaman sorunun yoksa detayli incelemeye calisiyorum.
(https://i.hizliresim.com/D6AkLz.png) (https://i.hizliresim.com/2Nl7kv.png)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: betseg - 12 Aralık 2015 - 18:42:01
Yok, o yazdığınız kod tam olarak doğru :)

Bu: https://forum.ubuntu-tr.net/index.php?topic=45477.msg568982#msg568982
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: -DıLgEş- - 20 Aralık 2015 - 13:11:40
Buradaki kaynak nasıldır? Bence yeni başlayanlar için güzel bir kaynak.. http://www.csystem.org/dokumanlar/80x86-sembolik-makina-dili-kurs-notlar%C4%B1-uyarlama-1
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 24 Aralık 2015 - 17:26:46
Basit mi? zor mu?.Bilmiyorum ama.Ugrasmak isteyenler icin paylasalim.(Dosya, yazinin sonun da)
Oneri=> Baslangic icin GDB/LLDB/radare gibi konsol tabanli debugger'lar ile inceleleme yapmanizi onermemekteyim.Konsol tabanli uygulamalara kendinizi ilerlettikce gecmeniz sizin yarariniza olacaktir.Benim onerim baslangic ASM bilginiz varsa, daha cok arayuzlu uygulamalar ile incelemeniz.
Nedir bunlar ↵.
1=> Hopper
Kendisinin linux surumu bulunmakta ve 30 dk gibi bir calistirma suresi bulunmakta.
30 dk yetmezse yeniden baslatarak bir 30 dk gibi sure tekrar elde edebilirsiniz. :)
2=> IDA
Linux icin demo surumu bulunmakta ama yazilimi analiz etmek icin yeterli.
Ben IDA goruntusu atayim.Merak edenler icin, hem de paylasilan crackme icin ipucu kodlari bulunsun.
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FBD9DWp.png&hash=a4ca0eb61f01b056d87b8fd70d55dc857b83242d) (http://hizliresim.com/BD9DWp)
3=> Bokken
Kendisi radare2'nin arayuz versiyonu.Bir de ragui diye vardi ama onu hic denemedim.
                         Baslangic analizler icin bunlar yeterlidir.Konsol tabanli yazilimlara, biraz pratik yaptiginiz zaman gecmenizi sizin icin daha iyi olacaktir.Ornegin Mac OS X sistemler de genel olarak tercih edilen LLDB yazilimi  kullanilmaktadir. GDB'ye bazi komutlari benzemektedir ama tam olarak degil.Ornegin ASM dokumune ulasmak icin GDB'de disas main ise LLDB'de bu komut ek olarak -n argumani almakta.(name = disas -n main).
Merak edenler icin bir LLDB goruntusu paylasalim.Zira kendinizi gelistirdikce, konsol tabanli uygulamalar da daha iyi analiz icin ekstra yazilimlardan faydalanmaya baslayacaksiniz.(Peda vs) 
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FyLnL1j.png&hash=66e4e8f91ee6fc0cd8e8834ac51ee30ec11e7e5a) (http://hizliresim.com/yLnL1j)
                         Bu bilgilerden sonra gecelim analiz islemine.Oncelikle analiz edecegimiz yazilimi iyi tanimaliyiz.Hangi dil de,Kullanilan foksiyonlar, bilinen pack vs var mi?.                       
Simdi ufak bilgiler paylastiktan sonra gelelim tesvik primine. :)
indir (http://www.dosya.tc/server6/nw3hhx/crackme-java.zip.html)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: lynxcode - 19 Ocak 2016 - 21:16:05
Konuya faydası yok ama amacına yönelik bir soru. Linux için decompiler biliyor musunuz?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 19 Ocak 2016 - 21:56:51
Bir önceki mesajda decompiler anlatımı var. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: lynxcode - 20 Ocak 2016 - 00:51:47
bunlar disassembler değil mi? benim dediğim exetoc tarzı, assembly e değil de ilkel bir c koduna dönüştürüyor. Birtane bulmuştum ama oda 64 bitte yoktu hata verip duruyordu. Zaten temelde bir farkları yok. Reversingten ve assemblyden şimdilik anlamıyorum. exetoc ninde c'ye çevirdiği exelerin değişkenleri felan asm tabanlı sanırım.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 20 Ocak 2016 - 11:21:51
IDA ve Hopper pseudo C kod üretebiliyorlar.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: lynxcode - 21 Ocak 2016 - 14:54:27
işime yarayabilir. ama şimdi biraz daha araştırma fırsatım oldu da Assembly şart sanırım.
Teşekkürler kolay gelsin. Mutlu reversingler
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 07 Şubat 2016 - 21:36:51
Crackme-java yazilimini da aradan cikartalim.Cozen olmayacak herhalde.Neyse diger yazlima gecmek isteyenler yazinin sonuna bakabilirler.
Yazilim hakkinda biraz bilgilenelim.

$ file crackme-java.zip ↵
crackme-java.zip: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped
$ ldd crackme-java.zip ↵
        not a dynamic executable

Bakalim strings ciktisi bize neler soyleyecek.

$ strings crackme-java.zip G java ↵
Xfjd6&ZN4java4C
o?rackme.java
$ strings crackme-java.zip G UPX ↵
cUPX!d
UPX!u
UPX!
UPX!

Simdi biraz kolayladik.

$ upx -d crackme-java.zip ↵
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep
30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     15196 <-      7900   51.99%  linux/ElfAMD   crackme-java.zip

Unpacked 1 file.
$ ldd crackme-java.zip ↵
        linux-vdso.so.1 (0x00007ffd49deb000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f594e5c1000)
        libgcj.so.16 => /usr/lib/libgcj.so.16 (0x00007f594b48b000)
        libm.so.6 => /usr/lib/libm.so.6 (0x00007f594b18d000)
        libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f594af70000)
        librt.so.1 => /usr/lib/librt.so.1 (0x00007f594ad68000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00007f594ab52000)
        libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f594a94e000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007f594a5aa000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f594e7d7000)

Sonrasini zaten paylasilan resim anlatmakta. =>crackme::crackme(void)<=  85(0x55) ile karsilastirilmakta.
ASM: ↓

mov edx, 0x55
cmp eax, edx

Gelelim bir diger programimiza.Programimiz da bir sifre soruluyor(Burasi zaten olmazsa olmazlarimiz).Dogru sifre girilince,
Kriptolu data dosyasi, programimizin calistigi dizine cikartiliyor ve asil islem de burada basliyor.(Kriptolu data dosyasini acmak).
Data dosyasini acmak icin Google amcamizdan yardim istemeye cekinmeyin. :)Biraz ileri seviye mi? diyeyim.Yoksa orta seviye mi?
bilemedim ama programimizi incelediginiz zaman zaten goreceksiniz.Sifreyi bilmesekte de DATA dosyasinin acildigini goreceksiniz
(En fazla 2sn surmekte).Bildigimiz uzere, AES 128-bit blok boyutu kullanirken, bizim DATA dosyasinin kullandigi 256-bit.
Aslinda burada belirtmek istedigim, guclu sifreler kullanmamiz gerektigidir.Programimiz da ki DATA cok basit bir yontem
ile korunmaktadir.Zaten herhangi bir sifre bilmemize gerekte yok ani (adi ustunde crackme:) ) Konuyu takip eden arkadaslarin,
cok rahatlikla cozeceklerini umuyorum.(Biraz daha yazarsam, direk cozumu aciklayacagim:) )
Cozum yontemlerinizi aciklamaktan lutfen cekinmeyin. Konuya geri donuslerim gec olabilir.Lutfen, simdiden kusuruma bakmayin.
Not => Son bir degisiklik yaptim.Iki dosyanin sifresi aynidir bilgilerinize.DATA dosyasi icin ugrasmaya bilirsiniz.Yazilimi cozmeniz
yeterlidir.DATA dosyasinla ugrasacak olan arkadaslar icin paylasilmistir bu bilgiler.
[indir] (http://s3.dosya.tc/server7/ibs8n7/crackme32.zip.html)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: mrgun - 25 Şubat 2016 - 15:19:55
@Reverser (https://forum.ubuntu-tr.net/index.php?action=profile;u=23686)
hocam tersine mühendisliğe başlangıç için önerileriniz nedir
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 08 Mart 2016 - 00:38:22
Crakme32 yazilimin cozumu paylasayim ve yeni bir yazilim ekleyim. Cozen olmuyacak herhalde!
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FrMMgQN.gif&hash=b159bb014d5db370bb4db8c215a7b5171b346bbb) (http://hizliresim.com/rMMgQN)
Yeni yazilim basit bir kod cevirisi
http://s8.dosya.tc/server2/3ynovx/cevir.zip.html
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 17 Mart 2016 - 21:28:59
Cok mu? Zor  olmus..!
Ipucu: (if else)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 21 Mart 2016 - 23:01:11
merhaba, vps üzerinden gdb ile çözmeye çalıştım. Şunun gibi bir şey sanırım :)

#include <stdio.h>
#include <stdlib.h>

char msg[] = "Tebrikler!\n";
char error[] = "Hata!\n";
char greeting[] =
                   "/*\n"
                   "* ===================================\n"
                   "*  Filename: cevir.c\n"
                   "*   Created: 02/17/2016 07:21:41 AM\n"
                   "*  Revision: none\n"
                   "*  Compiler: gcc\n"
                   "* ===================================\n "
                   "*/\n" ;

int main(int argc, char *argv[]) //0x080480c2
{
int val0;
int val1;
 

    printf(greeting);
val0 = 65;
val1 = 90;

if (val0 != val1)
{
err();
}
else
{
printf(msg);
}
}

int err() //0x080480f4
{
printf(error);
return 0;
}
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 22 Mart 2016 - 16:35:11
@reverser tebrikler.
Guzel bir calisma olmus. Kod bakımından cok uzun olmus sadece. Ben biraz farkli bir yol izledim ama calisma yapisini daha  basit olarak kodlasaydiniz yine kabul ederdim.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 23 Mart 2016 - 23:27:48
hocam basit bir cmp instruction'ı sadece :D
daha komplike bir şeyler bekliyorum sizden.  :P
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 24 Mart 2016 - 15:01:58
Zorlarim sınırları diğerinde :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 22 Mayıs 2016 - 19:19:21
Ugrasmak isteyenler icin kucuk ve guzel bir uygulama. (258bayt)
#################
# filename: RDF.c        #
# compiler: GNU/GCC #
#################
#         Ubuntu-TR         #

http://s2.dosya.tc/server/9wi5jy/rdf.bin.zip.html
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 01 Haziran 2016 - 19:51:25
sözde kod paylaşıyorum.  Zor oldu sanirim. :(
Kaynak kod:
http://sprunge.us/YZRM

void main(int a1, char *filename)
{
  int v3;
  signed int v4;
  int v5;

  v3 = sys_open(filename, 0, 0x124u);
  if ( v3 >= 0 )
  {
    fd = v3;
    while ( 1 )
    {
      v4 = sys_read(fd, &unk_80491D0, 0xAu);
      if ( !v4 || v4 < 0 )
        break;
      v3 = sys_write(1, &unk_80491D0, v4);
      if ( v3 < 0 )
        goto BYE;
    }
    v3 = sys_close(fd);
  }
BYE:
  v5 = sys_exit(v3);
}

Yazılımı çalıştırmanız için komut.
echo "read me" > read.txt ; ./rdf.bin.zip read.txt
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 09 Eylül 2016 - 13:30:50
Uzun bir aradan sonra python ile kolay dan zora dogru iki, uc tane yazilim yukleyelim. Ilgilenenler icin.
CrackMe :)
Edit: Siralama da hata yapmisim. 1,2,3,5 olanlar kolaydan orta dereceye gitmekte. Zor olan ise 4 .
Uygulamalarin hepsini.
$ python2 crackme*
Seklinde calistirabilirsiniz.

https://share.riseup.net/#b8_DfRxE-LY58ixBKP9g4w
Not: Cozum vidyosu cekilmis olup asagidaki adrestedir. Sifresi 1 hafta sonra paylasilacaktir. Zamanim olmaya bilir diye erkenden hazirladim.
http://s9.dosya.tc/server/um7245/crackmes.zip.html
sifre : 8f4fd3cfe119e6b6e3b5ec58b5dd060b
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: b4d - 11 Eylül 2016 - 21:43:19
Alıntı yapılan: Reverser - 03 Kasım 2014 - 20:34:00
Arkadaşlar merhaba, bu konuyu benim gibi reverse code enginnering hakkında kendini geliştirmek isteyenler için açtım. Planım şu, C programlama bilen arkadaşlar bir program yazacaklar ve kaynak kodunu paylaşmadan sadece derlenmiş .exe formatlı binary dosyayı paylaşacaklar bizde bu executable dosyaları analiz edip, C kodu haline geri çevirip burada paylaşacağız programı yazan kişi de orijinal kodunu paylaşacak ve nasıl bir iş çıkardığımızı göreceğiz.

Şimdi C kodlama bilen birinden bir program yazıp burada paylaşmasını istiyorum umarım yardım etmek isteyen biri çıkar :)

Hocam mümkünse özel bir mesaj atabilir misiniz?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 13 Eylül 2016 - 15:52:48
Kotu arkadasimiz. :) bana Illuminati gibi gizli mesaj vermek istemis herhalde . :)
Neyse fazla paranoyaya baglamadan :) once ki yazilimlar iptal. :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 31 Aralık 2016 - 01:50:52
Geriye donuk baktigim zaman a10 adli yazilimin yarim kaldigini gordum.  Cozume ulastiralim.

a10 yazilim ile bilgiler.

---- ELF Structures ----
ELF Header
class=64-bit
encoding=Little Endian
fileversion=1
os=System V
abi=0
type=ET_EXEC
machine=x86_64
version=1
entryPoint=0x4004c0
phoffset=0x40
shoffset=0x1888
flags=0x0
ehsize=64
phentsize=38
phnum=8
shentsize=40
shnum=1e
shtrndx=1b
InitArray (1)
Entry addess=0x400590 name=frame_dummy
Interpreter (offset=0x200, size=28)
Value="/lib64/ld-linux-x86-64.so.2"
Note Segment (offset=0x21c, size=32)
Name="GNU"
Type=1
Type String="NT_GNU_ABI_TAG"
Description="OS Linux 2.6.32"
Note Segment (offset=0x23c, size=36)
Name="GNU"
Type=3
Type String="NT_GNU_BUILD_ID"
Description="aa2d742521eb1dfebc8306be0f3445dfd51b587"
Read Only Segment (offset=0x8b0, size=51, strings=2)
String="integer pl0x lel"
String="u found dat thing"
Comment Segment (offset=0xd68, size=17)
String="GCC: (GNU) 5.2.0"
String Table (offset=0x15a8, size=736, entries=48)
String=""
String="a"
String="a10.c"
String="completed.6938"
String="crtstuff.c"
String="init.c"
String="main"
String="this_is_last"
String="this_is_last_lel"
String="this_last_thing"
String="this_other_thing"
String="this_otter_thingy_thing"
String="this_thing"
String="this_thingy_thing"
String Table (offset=0x310, size=93, entries=9)
String="GLIBC_2.7"
String="__isoc99_scanf"
String="printf"
        String="puts"

C Kod:
Kod (a10.c) Seç

#include <stdio.h>

int this_is_last();
int a;

int this_is_last_lel()
{
  int result;
  while ( 1 )
  {
    result = a;
    if ( a <= 0 )
      break;
    --a;
    this_is_last();
  }
  return result;
}
int this_is_last()
{
  --a;
  return this_is_last_lel();
}
int this_thingy_thing()
{
  int result;

  result = (a - 10);
  a -= 10;
  return result;
}
int this_thing()
{
  a *= a;
  printf("%d", a);
  while ( a > 10 )
    this_thingy_thing();
  return printf("%d\n", a);
}
int this_other_thing()
{
  a = -a;
  a *= a;
  a = -a;
  printf("%d", a);
  a = -a;
  while ( a > 10 )
    this_thingy_thing();
  return printf("%d\n", a);
}
int this_last_thing()
{
  a = 0;
  printf("u found dat thing");
  printf(" w");
  printf("%d", a);
  return puts("w");
}
int this_otter_thingy_thing()
{
  int result;

  result = (a + 10);
  a += 10;
  return result;
}
int main()
{
  int result;
  puts("integer pl0x lel");
  scanf("%d", &a);
  if ( a <= 0 )
  {
    if ( a >= 0 )
      this_last_thing();
    else
      this_other_thing();
  }
  else
  {
    this_thing();
  }
  if ( a )
  {
    this_is_last_lel();
    result = a;
  }
  else
  {
    result = a;
  }
  return result;
}

ASM analiz:

a10:     file format elf64

int this_is_last_lel()
{
    55                    push   rbp
    48 89 e5              mov    rbp,rsp
    48 83 ec 10          sub    rsp,0x10
  int result;
  while ( 1 )
  {
    result = a;
    8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # e <this_is_last_lel+0xe>
    89 45 fc              mov    DWORD PTR [rbp-0x4],eax
    if ( a <= 0 )
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 17 <this_is_last_lel+0x17>
  85 c0                test   eax,eax
  7e 1b                jle    36 <this_is_last_lel+0x36>
      break;
    --a;
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 21 <this_is_last_lel+0x21>
  83 e8 01              sub    eax,0x1
  89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 2a <this_is_last_lel+0x2a>
    this_is_last();
  b8 00 00 00 00        mov    eax,0x0
  e8 00 00 00 00        call   34 <this_is_last_lel+0x34>
    result = a;
  eb d2                jmp    8 <this_is_last_lel+0x8>
      break;
  90                    nop
  }
  return result;
  8b 45 fc              mov    eax,DWORD PTR [rbp-0x4]
}
  c9                    leave 
  c3                    ret   

int this_is_last()
{
  55                    push   rbp
  48 89 e5              mov    rbp,rsp
  --a;
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 46 <this_is_last+0xa>
  83 e8 01              sub    eax,0x1
  89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 4f <this_is_last+0x13>
  return this_is_last_lel();
  b8 00 00 00 00        mov    eax,0x0
  e8 00 00 00 00        call   59 <this_is_last+0x1d>
}
  5d                    pop    rbp
  c3                    ret   

int this_thingy_thing()
{
  55                    push   rbp
  48 89 e5              mov    rbp,rsp
  int result;

  result = (a - 10);
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 65 <this_thingy_thing+0xa>
  83 e8 0a              sub    eax,0xa
  89 45 fc              mov    DWORD PTR [rbp-0x4],eax
  a -= 10;
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 71 <this_thingy_thing+0x16>
  83 e8 0a              sub    eax,0xa
  89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 7a <this_thingy_thing+0x1f>
  return result;
  8b 45 fc              mov    eax,DWORD PTR [rbp-0x4]
}
  5d                    pop    rbp
  c3                    ret   

int this_thing()
{
  55                    push   rbp
  48 89 e5              mov    rbp,rsp
  a *= a;
  8b 15 00 00 00 00    mov    edx,DWORD PTR [rip+0x0]        # 89 <this_thing+0xa>
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 8f <this_thing+0x10>
  0f af c2              imul   eax,edx
  89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 98 <this_thing+0x19>
  printf("%d", a);
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 9e <this_thing+0x1f>
  89 c6                mov    esi,eax
  bf 00 00 00 00        mov    edi,0x0
  b8 00 00 00 00        mov    eax,0x0
  e8 00 00 00 00        call   af <this_thing+0x30>
  while ( a > 10 )
  eb 0a                jmp    bb <this_thing+0x3c>
    this_thingy_thing();
  b8 00 00 00 00        mov    eax,0x0
  e8 00 00 00 00        call   bb <this_thing+0x3c>
  while ( a > 10 )
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # c1 <this_thing+0x42>
  83 f8 0a              cmp    eax,0xa
  7f eb                jg     b1 <this_thing+0x32>
  return printf("%d\n", a);
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # cc <this_thing+0x4d>
  89 c6                mov    esi,eax
  bf 00 00 00 00        mov    edi,0x0
  b8 00 00 00 00        mov    eax,0x0
  e8 00 00 00 00        call   dd <this_thing+0x5e>
}
  5d                    pop    rbp
  c3                    ret   

int this_other_thing()
{
  55                    push   rbp
  48 89 e5              mov    rbp,rsp
  a = -a;
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # e9 <this_other_thing+0xa>
  f7 d8                neg    eax
  89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # f1 <this_other_thing+0x12>
  a *= a;
  8b 15 00 00 00 00    mov    edx,DWORD PTR [rip+0x0]        # f7 <this_other_thing+0x18>
  8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # fd <this_other_thing+0x1e>
  0f af c2              imul   eax,edx
89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 106 <this_other_thing+0x27>
  a = -a;
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 10c <this_other_thing+0x2d>
f7 d8                neg    eax
89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 114 <this_other_thing+0x35>
  printf("%d", a);
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 11a <this_other_thing+0x3b>
89 c6                mov    esi,eax
bf 00 00 00 00        mov    edi,0x0
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   12b <this_other_thing+0x4c>
  a = -a;
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 131 <this_other_thing+0x52>
f7 d8                neg    eax
89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 139 <this_other_thing+0x5a>
  while ( a > 10 )
eb 0a                jmp    145 <this_other_thing+0x66>
    this_thingy_thing();
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   145 <this_other_thing+0x66>
  while ( a > 10 )
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 14b <this_other_thing+0x6c>
83 f8 0a              cmp    eax,0xa
7f eb                jg     13b <this_other_thing+0x5c>
  return printf("%d\n", a);
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 156 <this_other_thing+0x77>
89 c6                mov    esi,eax
bf 00 00 00 00        mov    edi,0x0
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   167 <this_other_thing+0x88>
}
5d                    pop    rbp
c3                    ret   

int this_last_thing()
{
55                    push   rbp
48 89 e5              mov    rbp,rsp
  a = 0;
c7 05 00 00 00 00 00 mov    DWORD PTR [rip+0x0],0x0        # 177 <this_last_thing+0xe>
00 00 00
  printf("u found dat thing");
bf 00 00 00 00        mov    edi,0x0
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   186 <this_last_thing+0x1d>
  printf(" w");
bf 00 00 00 00        mov    edi,0x0
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   195 <this_last_thing+0x2c>
  printf("%d", a);
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 19b <this_last_thing+0x32>
89 c6                mov    esi,eax
bf 00 00 00 00        mov    edi,0x0
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   1ac <this_last_thing+0x43>
  return puts("w");
bf 00 00 00 00        mov    edi,0x0
e8 00 00 00 00        call   1b6 <this_last_thing+0x4d>
}
5d                    pop    rbp
c3                    ret   

int this_otter_thingy_thing()
{
55                    push   rbp
48 89 e5              mov    rbp,rsp
  int result;

  result = (a + 10);
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 1c2 <this_otter_thingy_thing+0xa>
83 c0 0a              add    eax,0xa
89 45 fc              mov    DWORD PTR [rbp-0x4],eax
  a += 10;
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 1ce <this_otter_thingy_thing+0x16>
83 c0 0a              add    eax,0xa
89 05 00 00 00 00    mov    DWORD PTR [rip+0x0],eax        # 1d7 <this_otter_thingy_thing+0x1f>
  return result;
8b 45 fc              mov    eax,DWORD PTR [rbp-0x4]
}
5d                    pop    rbp
c3                    ret   

int main()
{
55                    push   rbp
48 89 e5              mov    rbp,rsp
48 83 ec 10          sub    rsp,0x10
  int result;
  puts("integer pl0x lel");
bf 00 00 00 00        mov    edi,0x0
e8 00 00 00 00        call   1ee <main+0x12>
  scanf("%d", &a);
be 00 00 00 00        mov    esi,0x0
bf 00 00 00 00        mov    edi,0x0
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   202 <main+0x26>
  if ( a <= 0 )
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 208 <main+0x2c>
85 c0                test   eax,eax
7f 22                jg     22e <main+0x52>
  {
    if ( a >= 0 )
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 212 <main+0x36>
85 c0                test   eax,eax
78 0c                js     222 <main+0x46>
      this_last_thing();
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   220 <main+0x44>
eb 16                jmp    238 <main+0x5c>
    else
      this_other_thing();
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   22c <main+0x50>
eb 0a                jmp    238 <main+0x5c>
  }
  else
  {
    this_thing();
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   238 <main+0x5c>
  }
  if ( a )
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 23e <main+0x62>
85 c0                test   eax,eax
74 15                je     257 <main+0x7b>
  {
    this_is_last_lel();
b8 00 00 00 00        mov    eax,0x0
e8 00 00 00 00        call   24c <main+0x70>
    result = a;
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 252 <main+0x76>
89 45 fc              mov    DWORD PTR [rbp-0x4],eax
eb 09                jmp    260 <main+0x84>
  }
  else
  {
    result = a;
8b 05 00 00 00 00    mov    eax,DWORD PTR [rip+0x0]        # 25d <main+0x81>
89 45 fc              mov    DWORD PTR [rbp-0x4],eax
  }
  return result;
8b 45 fc              mov    eax,DWORD PTR [rbp-0x4]
}
c9                    leave 
c3                    ret   

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 10 Şubat 2017 - 23:50:36
Görmeyeli değerlenmiş buralar :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: contland - 13 Şubat 2017 - 01:06:57
Güzel site ama k nasıl ileti yazacağımız belli degil :D yeniyim ben :D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Reverser - 13 Şubat 2017 - 01:14:39
hoş geldin :) konuya ileti yazmakla ilgili bir sıkıntı mı yaşadın ?
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: OnLive - 13 Şubat 2017 - 01:38:04
Alıntı yapılan: contland - 13 Şubat 2017 - 01:06:57
Güzel site ama k nasıl ileti yazacağımız belli degil :D yeniyim ben :D

Bu iletiyi atabildiğinize göre çözmüş olmalısınız.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: cokomoko - 10 Mart 2017 - 00:44:22
Bu konuyu öyle ayrıntılı incelemedim ama bir ara bakınacağım. Karşılıklı soru-cevap hoşuma gitti, güzel bir ortam yakalanmış.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Hyd - 12 Nisan 2017 - 22:46:50
Hocam özelden bi' mesaj atabilir misiniz?

Size danışmak istediğim bi' kaç soru varda.
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 26 Mayıs 2017 - 15:03:10
Uzun bir aradan sonra, yeni bir EkleBeni ile Buradayiz. ^:^
Detayli bilgiler asagida olup, Oyuncularini beklemekte. ^_^
indir (http://s9.dosya.tc/server2/xeecje/badcafe.zip.html)
=====================================================================================
        Filename:  badcafe.c
     Description:  CrackMe
          Created:  2017-05-26   T 06:21 AM
        Compiled:  gcc7.1 badcafe.c -o badcafe.o -c
            Linked:  ld -melf_x86_64 ...
=====================================================================================

badcafe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, stripped, with debug_info

ELF Header:
  Magic:                                         7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                                          ELF64
  Data:                                           2's complement, little endian
  Version:                                       1 (current)
  OS/ABI:                                       UNIX - System V
  ABI Version:                                 0
  Type:                                           EXEC (Executable file)
  Machine:                                      Advanced Micro Devices X86-64
  Version:                                       0x1
  Entry point address:                      0xbadcaf0
  Start of program headers:             64 (bytes into file)
  Start of section headers:               3002480 (bytes into file)
  Flags:                                          0x0
  Size of this header:                       64 (bytes)
  Size of program headers:               56 (bytes)
  Number of program headers:          7
  Size of section headers:                 64 (bytes)
  Number of section headers:           15
  Section header string table index:  14

RELRO             STACK CANARY      NX                 PIE               RPATH        RUNPATH       FILE
No RELRO        No canary found     NX enabled    No PIE          No RPATH   No RUNPATH   badcafe

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 08 Temmuz 2017 - 23:32:03
Bir Krekle beninin dogusu.
https://www.youtube.com/watch?v=K4ACUVc8u6g

http://www.dosya.tc/server9/shzl7b/tmp_30277-badcafe-video1757046576.zip.html
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Sh4oTT - 17 Temmuz 2017 - 00:31:43
Video güzel olmuş, sesli anlatım olsa tadından yenmez :)
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: Bipolar_Disorder - 17 Temmuz 2017 - 01:41:12
Assembly dili bu iş için biçilmiş kaftan :)
Crack'ler felan bu dil ile yazılıyor.

Bu dili bilen birkaç yaşlı kurt kaldı :D
Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 012rev3 - 20 Temmuz 2017 - 21:17:12
Alıntı yapılan: 7hr33l3t73r - 08 Mart 2016 - 00:38:22
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.hizliresim.com%2FrMMgQN.gif&hash=b159bb014d5db370bb4db8c215a7b5171b346bbb) (http://hizliresim.com/rMMgQN)
Konuyu ara ara büyük bir ilgi ve merakla takip etmekteyim. Ne yazık ki yeterli bilgi ve donanımda olmadığımdan soruları çözemiyorum. Gerekli çözümlerin sunulması ve kimi kaynakların paylaşılması gerçekten harika.
Elimde dandik bir programla şifrelenmiş bazı fotoğraflar bulunmakta. Şifre kısa ve sadece numaralardan oluşsa bile, yani kaba kuvvet ile rahatlıkla çözülebilse bile malesef program dosyaları okumuyor. Uzun bir süre uğraştım ancak bir çözüm bulamadım ve şimdilik rafa kaldırdım. Belki bi gün çözerim ancak benim endişem dosyaların bozuk olabileceği. Çözebildiğim kadarıyla da Aes-128 ile şifrelenmiş. Bu nedenle bu yazıyı alıntıladım ama tam olarak söylenenleri de anlayabilmiş değilim. Şifre olmadan datanın okunabilmesi... Lütfen bu konuyu biraz açabilir misiniz?
Aynı zamanda paylaştığınız görseldeki masaüstü i3/xmonad vs. olsa gerek ve çok güzel bir şekilde konfigure edilmiş. Bu ayarlar için yararlandığınız kaynak oldu mu?

Başlık: Ynt: Tersine Kod Mühendisliği
Gönderen: 7hr33l3t73r - 22 Temmuz 2017 - 16:17:03
Sorunuzu tam olarak anlamadim. Neyi acmam gerekiyor?
Sizin paylastiginiz gorsel de kullanilan uygulamanin kendi ozelligi. Kaba kuvvet saldirisi diyorsunuz ya, iste yazilim da bunu kendi icinde bagrindiriyor. Siz uzun sifreler de hatirladiginiz kismi yaziyorsunuz, gerisini yazilim kendi bulmaya calisiyor.  Eger herhangi bir karakter hatirlamiyorsaniz bunu direk yazilima birakiyorsunuz. Sanirim sifre olmadan acmak kismini boylece aciklamis olduk. Benim anlatimlarima o yuzden pek takilmayim. Isin basinda olanlar icin yada soyle diyelim daha iyi anlasilsin. Temel bilgisi olmayanlar icin burasi pek uygun bir konu degil diyelim.
Soyle ki;

;intel
mov eax, 5

nedirin aciklamasini yapmiyoruz.
Yani, orada temel bilgisi olan bir kisinin ne yapildigini, (aciklama olmasa bile) cok rahat bir sekilde anlamis olmasi gerekir. Temel seviye egitim veriyor olsak, iste o zaman anlatim yapmamiz sart. O zaman bize, mov eax,5 nedir yada diye sorabilirsiniz.
Kisaca bazi bolumler de anlatim kismina pek takilmayin. Anlatim kismi cok onemsedigim birsey degil. (Anlatim yapma konusunda pek iyi degilimdir..!)

Gelelim diger bir sorunuza;
DWM kullanmaktayim. Yapilandirma dosyalari, github adresimde acik sekilde paylasilmakta. Bazi kullanicilarin yapilandirma dosyalarini (C)alip kendi istdigim sekilde duzenleyip kullanmaktayim. Arch'in wiki'sin de kullanicilarin Masaustu ve  terminal vs yapilandirmalarinin bulundugu bolumden, kendime uygun kullanicinin dosyalarini secerek kullaniyorum. Tabi sevmedigim bazi yerlerde oynama yapma geregi duyuyorum...