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

a6-v2

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



Bir şey fark ettim, 8'den beri her sayfadaki ilk post benim :D

Reverser


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


XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

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

Reverser

çö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");
}
}

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#304
Merhaba arkadaslar;
Bir tane tam egleneceginiz bir krekle_me :) haziradim.
Simdiden kolay gelsin. :)
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 :)))
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

UPX, Unpack ettim.
Entry point: 0x804923d
Main function: 0x8048960
string "cevap!!": 0x8169b28

ve şifreyi buldum: Cevap!!


XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

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

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

oasln

Özellikle static linklenmiş olması nedeniyle, son örnekte hayli zorlandım. Reverser mümkünse 0x8169b28 adresine nasıl ulaştığını açıklayabilir misin?
--

Reverser

@oasln, şu şekilde:
b * 0x8048960 |__-> 2. break point

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




XFCE ROCKS !
Powered by Thunar & XFWM4



oasln

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

Reverser

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




XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

Reverser

Yoda's protector olabilir mi ? ;D

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

Reverser

#316
Zip formatı görünce direkt aklıma o geldi. Gerçi sadece windows executableleri içindi yanlış hatırlamıyorsam.
Şifreyi buldum:
!!erfiS

XFCE ROCKS !
Powered by Thunar & XFWM4



oasln

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

7hr33l3t73r

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

Reverser

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.

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

Reverser

Fucktion iyiymiş. ;D
Kısaltma kullanıyorum ama o sözcüğün durumu biraz farklı. Biz ona mobil klavyemin azizliği diyelim. ;D

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

oasln

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

Reverser

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

XFCE ROCKS !
Powered by Thunar & XFWM4