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.

betseg


Reverser

@betseg, doğru ! Kod haline çevirin şimdi :D

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

   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.

Reverser

anladım ama bozmayayım dedim :D Diğerinide atabilirsiniz.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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.

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

#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

Reverser

@betseg, biraz. :)
Biraz mola verelim, gece güzel bir reverse_me paylaşacağım.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg


Reverser

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






XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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;

Reverser

dokuz olduğunu tahmin etmiştim :D tam kaynak kodu görebilir miyim ?

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Reverser

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.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

neynefes

Programlama olayına ilk fırsatta girmek istiyorum. Başlığı gördükçe imreniyorum :)

Reverser

@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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

#244
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--;
  }
}


Reverser


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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Reverser

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.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

#248
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 çok küçük bir şey, amaç konu boş kalmasın.

Reverser


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

XFCE ROCKS !
Powered by Thunar & XFWM4