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

olmamış ne yazık ki... http://www.cyberciti.biz/tips/compile-32bit-application-using-gcc-64-bit-linux.html

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

ekremsenturk

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

Girilen iki rakamın toplamını ikiye mi bölüyor?

betseg


Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Reverser

disassemble ederken değerleri d1,d2,d3 şeklinde kenara not alıyorum yanlış geçirmişim :) y - x olacak tabii ki.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

Bu denklemi nasıl buldum, bilmiyorum. Bir anda aklıma geliverdi. Ortalama almak için oldukça uzun bir yöntem.

Reverser

olsun, güzel oldu konu canlansın :) var mı biraz daha ?

XFCE ROCKS !
Powered by Thunar & XFWM4



karboran

@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 :)
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



karboran

@Reverser dikkatimden kaçmış demekki , bi bakayım ben paylaştıklarınıza . Teşekkürler :)
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

betseg

#213
@Reverser mayıstaki reverse_me ne acaba? time, srand, rand filan gördüm ama çözemedim :D

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

Amaç: can sıkıntısını gidermek
İstek: üsttekiyle aynı
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.

Reverser

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.

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg


thoron

#220
İ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



betseg

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

Reverser

@betseg, hayır :D biraz daha uğraş bakalım ne çıkacak ?
@thoron, dosyayı 32 bit olarak paylaşabilir misiniz ?

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

thoron

#224
@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