Tersine Kod Mühendisliği

Başlatan Reverser, 03 Kasım 2014 - 20:34:00

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

blackwidow

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 :)

Reverser

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


//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

XFCE ROCKS !
Powered by Thunar & XFWM4



h454n

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.

7hr33l3t73r

@h454n cok zamete girmissin ama stringlerde de sifre gorunuyor ;)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

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.

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#130
@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
bu sefer ipucu falan yok cok cabuk cozuluyor sonra.
Yakinda yazilim yetistiremiyecez :)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

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 :)

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#132
@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
Duzenleme;
Biraz kelimesi hafif kalabilir :)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

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
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 ?

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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.
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

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.. ?

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

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ü:



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

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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;
}
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

#139
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 :)

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#140
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. :)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser


XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

Evet konsol birde egitim sart :)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

#143
çözüm için bekleyeyim mi biraz daha ?

XFCE ROCKS !
Powered by Thunar & XFWM4



-DıLgEş-

Bir şey soracam bu işi nasıl yapıyorsunuz. Yani hangi prıogram tersine çeviriyor.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

Reverser

@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.

XFCE ROCKS !
Powered by Thunar & XFWM4



-DıLgEş-

Hocam, bu gdbyle nasıl gösteriyoruz dissamble kodunu. Dün birşeyler yaptım ama sonuç 0
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

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:

gdb reverse1

disas main

dersen main'i disassemble edersin.

XFCE ROCKS !
Powered by Thunar & XFWM4



ata

<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>
Cahil tutarlıdır kendi içinde, kötü olan yarı cahillerdir.

Reverser

@ata, Amaç nedir ? Ayrıca lütfen code etiketi içinde paylaş.

XFCE ROCKS !
Powered by Thunar & XFWM4