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

#275
:D
Şu an evde değilim eve gelince bendeki kodu yazarım.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 13 Temmuz 2015 - 22:09:12

Biliyorum çok noob bi kod :(

#include <stdio.h>
#include <stdlib.h>
int main() {
  //ilk tanımlamalar
  int sil;
  char *girisDosyaAdi = "onys.txt";
  char ad[10];
  int yas;
  //bitti
  FILE *dosya1;
  dosya1 = fopen(girisDosyaAdi, "w");
  //dosya boş mu bakalım
  if (dosya1 != NULL) {
    sil = remove(girisDosyaAdi);
    if (sil == 0) {
      //boş değilse siliyor
      printf("input dosyasi %s silindi (ustune yazilabiliyor)\n", girisDosyaAdi);
    }
    else {
      //silemezse
      printf("input dosyasi %s silinemedi (ustune yazilamiyor)\n", girisDosyaAdi);
      return EXIT_FAILURE;
    }
  }
  else {
    //do nothin
  }
  fclose(dosya1);
  //dosyaya adı, yaşı ve 10 yıl sonraki yaşı yaz
  FILE *dosya2;
  dosya2 = fopen(girisDosyaAdi, "w");
  printf("Once adinizi sonra yasinizi girin:\n");
  scanf("%s", &ad);
  scanf("\n%d", &yas);
  int onys = yas + 10;
  fprintf(dosya2, "%s, %d yasinda, 10 yil sonra %d olacak", ad, yas, onys);
  fclose(dosya2);
  printf("\n10 yil sonra %d yasinda olacaksin\nonys.txt'ye bakmayi unutma\n", onys);
  return 0;
}




Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 14 Temmuz 2015 - 09:25:10

(Biliyorum mesaj tekrarı olacak)
Neden dosya boş mu diye kontrol etmeden sildi? Tamam, böyle daha iyi, bug programı düzeltti ama yanlış bir şey mi yaptım?

7hr33l3t73r

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

Reverser

hocam merhaba şöyle bir şey çıkardım


/*
Reversed source code - Reverse
file: reverse_me

entry point is: 0x4000b0

Dump of assembler code from 0x4000b0 to 0x400114:
=> 0x00000000004000b0 <_start+0>: mov    $0xe,%edx
   0x00000000004000b5 <_start+5>: mov    $0x4000d2,%esi
   0x00000000004000ba <_start+10>: mov    $0x1,%edi
   0x00000000004000bf <_start+15>: mov    $0x1,%eax
   0x00000000004000c4 <_start+20>: syscall
   0x00000000004000c6 <_start+22>: mov    $0x0,%edi
   0x00000000004000cb <_start+27>: mov    $0x3c,%eax
   0x00000000004000d0 <_start+32>: syscall

(gdb) x/s 0x4000d2
0x4000d2: "Tersine kodla beni "
(gdb)


01 sys_write
03 sys_close
*/


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/syscall.h>

#define MAX 256

int main(int argc, char *argv)
{
  char buffer[MAX] = "Tersine kodla beni ";
  write(0,buffer,14);
  exit(0);
}

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#278
Merhaba @Reverser,  tebrik ederim. Zaten yazilim da herhangi bir amac yoktu.Sadece biraz kafa karistirmak istedim.
C kod.

#include <sys/syscall.h>
#include <unistd.h>

int main(void)
{
syscall(SYS_write, 1, "Tersine kodla ", 14);

return 0;
}

Asm'ye cevrilmis kod.

#include <asm/unistd.h>
#include <syscall.h>
.file               "reverse.S"
.section         .rodata
text:
.string"Tersine kodla "
.text
.globl            _start
.type            _start, @function
_start:
                   ##   yaz bakalim
                  movl    $14, %edx
                  movl    $text, %esi
                  movl    $1, %edi
                  movl    $SYS_write, %eax
                  syscall

                  ## bye bye de abiye ;)
                  movl    $0, %edi
                  movl    $SYS_exit, %eax
                  syscall

.size           _start, .-_start
                 .section.note.GNU-stack,"",@progbits


Zaten yazilim strace ile incelendiginde bile sadece yazma islemi yaptigi gorulebilirdi.

strace -f ./reverse   
execve("./reverse", ["./reverse"], [/* 119 vars */]) = 0
write(1, "Tersine kodla ", 14Tersine kodla )          = 14
_exit(0)                                = ?
+++ exited with 0 +++

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

Reverser

Hocam strace ile write göremedim neden bilmiyorum syscall numaralarından buldum o nedenle. Dosya ve cevabınız için teşekkür ederim. :)

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

Rica ederim.Baska yazilimlar ile gorusmek dilegiyle.
Iyi forumlar...
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

betseg

Alıntı yapılan: betsegNeden dosya boş mu diye kontrol etmeden sildi? Tamam, böyle daha iyi, bug programı düzeltti ama yanlış bir şey mi yaptım?
Hala merak ediyorum :D

Reverser

@betseg, tam olarak ne yapmak istediğini anlayamamış olduğumdan cevap verememiştim sana.
şöyle bir script yazdım umarım açıklayıcı ve öğretici olur
1-)test dosyası read modunda açılır
2-)dosya var mı yok mu bakılır.
3-)dosya varsa, fseek kullanılarak dosyanın tam olarak geçerli boyut file_size değişkenine atanır
4-)atanan değişken 0 ise gerekli işlem, 0 dan büyükse diğer bir gerekli işlem yapılır.


/*
File checking  with actual file size
Reverser
*/

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
  int file_size;
  FILE *file_pointer;
  file_pointer = fopen("test","r");
  if (file_pointer == NULL)
  {
    //LOL
    printf("There is no file.\n");
    return -1;
  }
  fseek(file_pointer, 0, SEEK_END);
  file_size = ftell(file_pointer);
  fseek(file_pointer, 0, SEEK_SET);
  printf("file size is: %d byte(s)\n",file_size);

  if(file_size == 0)
  {
    printf("file is empty or 0 byte(s)\n");
    //do sumthin'
  }
  else
  {
    printf("file is not empty or greater then 0 byte(s)\n");
    //do_sumthin'
  }
return 0;
}

XFCE ROCKS !
Powered by Thunar & XFWM4



betseg

Her yazdığın kodda gülüyorum ya :D
do_sumthin' nedir :D

Reverser

azıcık neşelensin buralar :D aklına takılan bir şey olursa özelden sorarsın.

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#285
@betseg;
Sorunuza su cevap verilebilir.
w flag sadece yazma modu ve dosya olsun veya olmasin yeniden olusturulur demek kisaca yeterlidir sanirim.Yeniden olusan bir dosya da da  bos musun, dolu musun demek biraz garip sanirsam.

NOT-> Acayip bir de durum var, baslik altinda cevap verip vermeme arasinda kaliyorum.Aklim cevap vermememi.Konunun disina cikmamak icin.Bir taraftan da konu ile ilgili duruyor gibi.Uyari alabiliriz. O yuzden kisaca cevap yazdim.
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

@817c0d3r, aynen öyle hocam az önce access mode hakkında bilgi verdim arkadaşa. :D

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

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

heartsmagic

Elimizde sopa ile beklemiyoruz yahu :)
Başlık zaten çok farklı bir başlık, ben bakınırken zevk alıyorum. Hani programlama forumu değiliz ancak hep söylemişimdir, bu konuların da konuşulması kendi adıma hoşuma gidiyor. O nedenle sizler başlığın dağılmasından rahatsız olmadığınız sürece bizler için bence sorun yok.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ata1

sanmayın katılmıyorsak izlemiyoruz biz de kıyıdan kıyıdan öğreniyoruz  ;D konunun takipcisiyim

7hr33l3t73r

Estafurullah ya @heartsmagic.Oyle birsey demek istemedim de :)
Yazmaya baslayinca kendimi durduramiyorum.Bir de cevap verdikce farkli sorular geliyor.
O an da aklima konu disi  oldugu ya da olabilirligi hic gelmiyor.Direk sorulan sorulara odaklaninca boyle durumlar olusuyor.
O yuzden konu disina cikmamaya ozen gosteriyorum.
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

heartsmagic

Takılıyorum ben de zaten, ciddi olarak yazmadım yani o kısmı :) Kısacası başlık tamamen sizin tasarrufunuzda.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

7hr33l3t73r

Bizleri (daha dogrusu beni) aydinlattiginiz icin tesekkur ederim @heartsmagic. :)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

heartsmagic

Ben de bu güzel katkılarınız için teşekkür ederim hepinize :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Reverser

@heartsmagic, yorumunuz için teşekkürler biz bu işle uğraşırken çok eğleniyoruz keşke katılım daha çok olsa...

XFCE ROCKS !
Powered by Thunar & XFWM4



heartsmagic

Açıkçası bu kadar katılımın olması bile şaşırtıyor beni, tabi daha fazla olmasını ben de isterim. Hani bir programlama forumu olsak daha fazla katılım olması gerekir ama bu forum için bence iyi bile :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

betseg

Ben sadece öğrenmek için katılıyorum konuya :)

7hr33l3t73r

#297

@betseg sizin kodlar da  fazlaliklari atarsak,  soyle birsey ortaya cikar. :)

#include <stdio.h>
//#include <stdlib.h>
int main() {

  int yas,yil;

  char ad[20];


  FILE *fp;
  if ((fp = fopen("onys.txt", "w")) == NULL) {


      printf("Dosya acilamadi!\n")
    Return 1; //exit(1);
}






  printf("Once adinizi sonra yasinizi girin:\n");
         scanf("%s %d", &ad, &yas);

  yil = yas + 10;
fprintf(fp, "%s, %d yasinda, 10 yil sonra %d olacak", ad, yas, yil)

  printf("\n10 yil sonra %d yasinda olacaksin\nonys.txt'ye bakmayi unutma\n",yil);
  fclose(fp);
  return 0;
}

Cok mu? Kisaldi kodlar ne..! :)
NOT~ Telden yazdim.Duzenlemek gerekebilir.
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



betseg

#299
Süper bi dil buldum. Adı LOLCODE :D
HAI 1.3                                        BTW başlıyo main gibi bişi int main(){
  CAN HAS STDIO?                               BTW #include <stdio.h> ama mainin içinde
  VISIBLE "mrb:)LOLCODE ornegi"                BTW printf("mrb\nLOLCODE ornegi");
  I HAS A giris                                BTW int giris;
  GIMMEH giris                                 BTW scanf("%d", &giris);
  I HAS A sonuc, sonuc R DIFF OF giris AN 1    BTW int sonuc; sonuc = giris - 1;
  VISIBLE sonuc                                BTW printf("%d", sonuc);
KTHXBYE                                        BTW }



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 17 Temmuz 2015 - 05:02:52

If-Else, For döngüleri basit matematik filan da var :D

https://github.com/justinmeza/lolcode-spec/blob/master/v1.2/lolcode-spec-v1.2.md