Tersine Kod Mühendisliği

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

« önceki - sonraki »

0 Üyeler ve 13 Ziyaretçi konuyu incelemekte.

betseg


Reverser


XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

#252
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.

Reverser

"There is a hidden buffer.
Try to find me k ?"
bufferın kendisi zaten :D Diğer fonksiyonları bekliyorum.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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.

Reverser

Floating point load olduğunu varsay. Bahsettiğin wiki sayfası burası mı ? https://en.wikipedia.org/wiki/X86_instruction_listings

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

#256
Yok bu 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
Hep yeni şeyler öğreniyorum :D

Reverser

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);
}
}

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Buffer'li kod nasil oluyor bi öyle atsana merak ettim.

Reverser


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"
}


XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

#260
"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
Yenisi :D


47 dk sonra atsam mesaj tekrarı olmayacaktı galiba.

7hr33l3t73r

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

Reverser

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);
}

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

Reverser

evet, derledim ilki sizin dosyasınız ikincisi reverse edilen.


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

dddddddddddd


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

ddddddddddd


XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

Programi calistirip test yazin oyle deneyiniz.
Farki goreceksiniz. :)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

#266
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
{
//
}
}

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

Evet simdi olmus :)
c  kod.

#include <stdio.h>
void main(void)
{
int kar;
If ((kar=getchar())!=`\n`)
    main();
putchar(kar);
}
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

Tamamdır hocam dediğim gibi gözümden kaçmış.  :))

XFCE ROCKS !
Powered by Thunar & XFWM4



Sh4oTT

#269
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

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



Sh4oTT


betseg

@Reverser özel mesajda dosya input-output filan demiştin. Al sana böyle bir şey :)

http://s2.dosya.tc/server2/0ig41w/a6.zip.html

7hr33l3t73r

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

Reverser

Efe ler
10 yıl sonra 12 yaşında  ;D

XFCE ROCKS !
Powered by Thunar & XFWM4