herm1t LIVE!ng room - Ах, пингвин, пингвин, пингвин! Белый пузо, черный спин! [entries|archive|friends|userinfo]
herm1t

[ website | twilight corner in the herm1t's cave ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Ах, пингвин, пингвин, пингвин! Белый пузо, черный спин! [Mar. 27th, 2009|05:07 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|, , , , ]
[Current Mood |awake]

Куда-то делся сайт EOF :-( Нашелся! Ж-)
Вчера увидел смешное в elf/dl-addr.c А и правда, что сделаешь-то? Ну не добавлять же в самом деле DT_SYMCOUNT? Сколько нужных и полезных полей (grep DT_ /usr/include/elf.h) уже реализовано, а это подождёт! Ж-)
   101      /* There is no direct way to determine the number of symbols in the
   102         dynamic symbol table and no hash table is present.  The ELF
   103         binary is ill-formed but what shall we do?  Use the beginning of
   104         the string table which generally follows the symbol table.  */
   105      symtabend = (const ElfW(Sym) *) strtab;
А свежий JCompVir нежданно, негадано нашёлся в обыкновенном почтовом ящике, куда приходят не имейлы, а счета и прочая дрянь. Ж-) (UPDATE) Чтобы не плодить посты, добавлю предисловия (авторское и переводчиков) прямо сюда. (У Эрика, кстати, занятные бланки, таких ещё не получал Ж-) Наконец-то эта неимоверно долгая история закончилась самым замечательным образом. Ж-) А вот ещё откопал в архиве:
Ralf Burger to me (12/17/06)
	
herm1t schrieb:
- Show quoted text -
hello,

ups..... thats more then 20 years ago!....

I think, I found it in the archives of "Universitaet Dortmund".
But I don't remember it excatly.

Best regrads

Ralf Burger

Editors/translators Foreword

Daniel Billar
Department of Computer Science,
University of New Orleans,
New Orleans, USA

Eric Filiol
ESIEA, Laval,
Labaratoire de virologie et de cryptologie op&eacurte;rationnelles,
Laval, France
e-mail: efiliol@wanadoo.fr

Bereishit In the beginning, there was bureaucracy. I had tried to get major AV companies to give me malware samples to study in an academic setting, but to no avail: Liability reasons, and their suggestion — trekking back and forth to their corporate 'clean' room — was unpalatable to me. I like flat hierarchies, so I turned to herm1t. Herm1t runs (singlehandedly, with minimal equipment and funds) the labour of love known as vxheavens (http://vx.netlux.org), a full-spectrum site dedicated to computer viruses. As quid pro quo, I sent him historical papers he sought for his collection. One title, though, seemed out of reach: A German 1980 MSc thesis by some fellow named Juergen Kraus.

A hefty Dortmund package arrived late October 2006. I was quite pleased. After almost a year of unsuccessful attempts through US academic institutions' Intra Library Loan program, I had the epiphany to contact the computer science librarian at the University of Dortmund, Peter Kleffmann. He managed to locate the sole remaining public copy of the thesis — adding an air of mystery to this trouvaille, it was found stashed away in a vault. I skimmed the thesis: Over two hundred pages on the topic of self-reproducing programs, yet set on a mechanical typewriter, chock- full with hand-edited mathematical formulae and notation, Siemens assembly and SIMULA code. I could not fend off a feeling of nostalgia (and gratitude for Donald Knuth). I set it aside till Christmas break.

As I worked my way through the thesis over Christmas break 2006, my cursory curiosity gave way to wonderment, then awe, then electricity. I felt as if I had stumbled upon a 10th century manuscript in an Scottish convent, delineating the calculus seven hundred years before Leibnitz and Newton. Aspects of the history of computer virology had to be rewritten and proper due given — what a fortuitous find! I sent a printed snail mail copy off to herm1t in the Ukraine and pondered my next steps.

In early February, Eric Filiol, after having discovered an electronic version of the thesis on vxheavens, proposed to me that we jointly translate the work into English, with Juergen Kraus' permission. After almost two years of translation and editing work, Eric and I are pleased to make the translated MSc thesis On Self-Reproducing Computer Programs — easily PhD quality at a top notch institution today — available to a wider audience.

Kraus' work can be approached from several perspectives: As a software engineering tour de force; as a scholarly mathematical investigation of the minimal requirements for self-reproducing computer programs, as an example of William Carlos William's musings of what would happen in a world, lit by the imagination. It may also be read, as the author suggests, as an expression of the scientific "Zeitgeist" of the late 1970s: With the advent of powerful computer systems (like the IBM 360 series) hooked up to networks (US DoD's ARPANET), the spirit of space exploration still fresh and diffuse fears of computers taking over the world popping up in science fiction themes (movies like Colossus), the question Kraus alluded to seems not too farfetched: Could one identify complex structures within computer systems? Moreover, could these structures evolve into something that resembled biological life? Could they even evolve? Thus, an insouciant and inquisitive Juergen Kraus set out to study artificial digital life, with self-reproducing computer programs as his object of investigation. He subsequently offered not only proof that self-reproduction is weaker than recursion (LOOP1 programs are sufficient) and clever constructive examples of such programs in several languages, but had them compete for resources — complete with mutations and crossovers and fitness functions — in a digital biotope.

It is instructive to review some historical precedent. Kleene's recursion theorem (1938) is, of course, explicitly acknowledged in the thesis. Kraus and Claus' speculations were anticipated by von Neumann in his 1949 lecture series where he opined that life as a process could be abstracted away from a particular medium. In 1962 at Bell Labs, Victor Vyssotsky, Robert Morris Sr (Morris fils is the father of the 1988 worm) and Douglas McIllroy developed Darwin, where reproducing computer programs (with the help of a centralized umpire) tried to eliminate competing programs. This setup inspired Core Wars in 1984. The first known (so far) self-reproducing program, a so-called quine written in Atlas Autocode, is attributed to Hamisch Dewar at the University of Edinburgh in the 1960s. His work inspired Bratley and Milo's paper on self-reproducing automata in 1972. Kraus' work in 1980 proved, among other things, that arbitrary functions could be added to self-reproducing programs. As such, he implicitly foreshadowed Cohen and Adleman's 1984 computer virus conceptualization, if not their seminal formalization. 1

In 1994, ecologist Thomas Ray devised a virtual world called Tierra, seeded with one engineered computer program. Its subsequent offspring, subject to evolutionary pressure in their competition for time and memory resources, gave rise to an ecosystem complete with 'organisms', 'parasites' and 'hyperparasites'. Also in 1994, using a genetic programming framework with LISP programs, John Koza studied the spontaneous emergence of self-reproducing computer programs. Starting with a seed of 12 million 'normal' programs whose functions and terminals could recombine, several hundred self-reproducing programs spontaneously emerged, with a calculated probability of 10-6 to 10-9. One has to admire the audacity, instincts, scope and prescience of Kraus's artificial life enterprise.

In addition, considering both the history of computer virology in particular, as well as the domain computer science in general, his work has an incomparable, special quality to it. Between von Neumann's groundbreaking work on cellular automata self-reproduction and Cohen's formalization of computer viruses, Juergen Kraus addressed existing epistemological lacunae in an particularly masterly way. While Kleene's recursion theorem (at least one of the numerous forms of that deep theorem) contains already the essence of computer virology (and much more; the reader is refer to Raymond Smullyan's Diagonalization and Self-reference) — never before did this complex theorem receive any "practical" treatment. Kraus was the first who not only presented such an application, but also illustrated it with many clever practical programs, thus realizing a harmonious synthesis between hard theory and elegant programming. Where von Neumann's approach was — in this context — rather inductive, Kraus's work is deductive. This last point clearly illustrates the European approach to science where mathematical formalism represents the essential theoretical 'seed' scaffolding for subsequent practical application. In this respect, Kraus built a bridge between Kleene's work and Cohen's thesis. Thus, we may definitively claim that computer virology was born on the "old continent" Europe. Why was Kraus' groundbreaking contribution virtually unknown for so long? There were rumors of the German government locking up the thesis to prevent knowledge of viruses from seeping out. The truth proved much more prosaic: Mr Decker, who realized earlier than most the scientific treasure Dortmund harbored, presciently stashed the last copy in a safe to prevent tidy-minded secretaries from throwing it out.2

We are extremely honored to give Juergen Kraus and his work his long overdue tribute. We would like to furthermore extend our gratitude to the following people, without whose efforts none of this could have happened. Prof. Volker Claus (now at the University of Stuttgart, among myriads of innovation a co-founder of the German ACM), the modest and farsighted pioneer of computer science in Germany, for inspiring and guiding Juergen Kraus that fateful winter of 1978/1979. We all should be so lucky to find mentors and students like that. The dedicated herm1t, whose boundless curiosity proved infectious (which does not lack a certain poetry, given the subject matter) and whose services to the virology community are greatly appreciated. Mr Peter Kleffmann, without whose persistence the remaining copy would not have been located. Mr Hans Decker, who enthusiastically supported this translation venture and provided the fascinating background history (of which just the surface was scratched in this foreword). Mr Decker also enabled us to contact Mr Kraus and to obtain the copyright permissions for this translation. Lastly, Mr Juergen Kraus, whom I had the pleasure of meeting at the 25th anniversary of Computer Science at the University of Dortmund in November 2007. He gave a didactically outstanding presentation. I remember recalling wistfully von Hofmannsthal

"Wie wunderbar sind diese Wesen,
Die, was nicht deutbar, dennoch deuten,
Was nie geschrieben wurde, lesen,
Verworrenes beherrschend binden
Und Wege noch im Ewig- Dunkeln finden."

We hope you, the readers, will agree.

Foreword

Jürgen Kraus

This foreword was translated from German by the editors Daniel Bilar and Eric Filiol (corresponding editor: efiliol@wanadoo.fr)

"Wer in der Zukunft lesen will,
muss in der Vergangenheit blättern"
"Celui qui veut lire dans,
le futur doit feuilleter dans le passé".

André Malraux

Let us take a scroll down memory lane; some twenty-eight years to be exact.

In 1980 — the year in which Ronald Reagan had just been elected 40th President of the United States — we find the Cold War still very much ongoing and Java synonimous with an island in the Indian Ocean. Adolescents had not yet had their spatial acuity tested by Rubic's Cube, and you could be fairly certain that chess skills were measured solely against other carbon-based bipeds.

In 1980, most computers were behemoths, so-called main-frames, whose gargantuan dimensions filled entire halls. However, one could discern the first stirrings of change, with home computers like the Atari 400 or the Sinclair ZX80 appearing. What we call our present day Internet was slowly developing from the US DoD's ARPANET project. The poster child of the personal computer era, the IBM PC, was to be launched a mere year later.

In 1980, the University of Dortmund was also about to graduate me in Computer Science; in those days a field still in its infancy.

My studies comprised in roughly equal parts theoretical and practical subjects; though I had always felt especially drawn to theoretical vantage points. You may ask why: On the one hand , the bromide of theory revealing the essence of things by virtue of material detachment rang true to me, on the other hand, I did minor in mathematics.

Though exams were tedious, I needed to hand in thesis to graduate; this pre-supposed my finding a topic first. Here is where my penchant for theory paid off handsomely: I had been auditing the course "Recursive Functions" in the Winter semester 1978/1979, taugh by Prof. Volker Claus, one of Germany's outstanding computer science pioneers. I approached Prof Claus in my search for a thesis topic. His suggestions revolved around computability and recursive functions, which helped crystallize the following question: Is it possible to construct self-reproducing programs, and can we analyze their algorithmic complexity and the function classes these programs realize?

The impetus for this particular line of investigation lay in Prof Claus' visionary ideas: "If one conceives of a computer system (in a feat of futuristic abstraction) as an artificial world, we may search for life-like processes therein. Computer programs may be cast in the role of simple living things as long as they evince defining traits such as mutation, reproduction and metabolism; roughly analogous to their biological counterparts."

In the mind of an euphoric student, a thesis on self-reproducing programs represented no less than the quest for life in a primordial computer soup consisting of ones and zeroes. It also obviate the need to fly to Mars to find little green men — and happily, to substitute astronaut food for donuts and to subject oneself to space radiation. After all, the computer system might be harboring creatures just waiting to be discovered by yours truly.

Hence, I adopted the topic. I did this in full knowledge that the existence of self-reproducing programs (also in higher level language) followed by necessity from Kleene's recursion theorem, but that, in practice, actual construction using said theorem would have to fail. I had to find a way, my own way — that was the challenge.

To cut to the chase, the thesis' goals were met in that self-reproducing programs in higher level programming languages were constructed and their properties investigated. It turned out that self-reproducing properties could be formulated with relative few lines of code and simple algorithmic (loop1) complexity. Of particular importance was the realization that self-reproducing programs could be enhanced by arbitrary — possibly harmful — functions while maintaining their self-reproductive capabilities. Put another way, in addition to their harmful functionality, malicious programs could have self-reproduction added to their repertoire, thereby significantly increasing reach and noxiousness.

Compared to biological organisms, however, self-reproducing programs lack a metabolism. As such, they can at most be classified as viruses. It seems that little green men are yet more likely to be found on Mars or in some other galaxy.

Thus, already in 1980, self-reproducing programs with noxious capabilities described the notion of a "computer virus", albeit unwittingly and without appreciating the notoriety the subject would achieve in years to come.

After receiving my Master's from the University of Dortmund and starting my corporate career end of 1980, I could therefore not have anticipated running into my old thesis "On Self-Reproducing Programs" over and over again. Quite a few articles on computer viruses referenced my work. As far as I know, the first in-depth discussion appeared in Ralph Burger's "Das Grosse Computerbuch" (Data Becker 1987). He found it remarkable that on the one hand, it predated Fred Cohen's "Computer Viruses — Theory and Experiments" (University of Southern California 1983) by roughly four years. On the other hand, the treaties had remained virtually uknown to the general public. Though not missing or lost, it was only accessible via the University (todat Technical University) of Dortmund.

The relative obscurity has come to an end, in part thanks to Daniel Bilar, a promising young scientist at the Univeristy of New Orleans. He had heard abouth the thesis in the course of his investigating metamorphic computer viruses. He queried for and obtained — after some determined efforts — a copy from Dortmund. He then enthusiastically announced to the Dortmund Department of Computer Science his intentions to make an English translation available: His colleague, fellow translator and editor-in-chief Eric Filiol would publish it in the leading specialized academic computer virology journal, "The Journal in Computer Virology" (Springer Paris). With pleasure, I agreed to this endeavor. To have the treatise "on Self-Reproducing Programs" republished, after almost thirty years, is after all a very special honor.

Hagen, November 2008 Jürgen Kraus




1 As an aside, the earliest occurrence of the term and idea of a computer virus can be traced back not to Cohen (1983), Brunner (1975), or Gerrold (1972) but to Gregory Benford, then at Lawrence Radiation Lab at Livermore, in Venture Magazine of May 1970. In addition, the enterprising Benford concurrently tried to sell the first known AV product Vaccine he devised against the threat he described.

2 The suppression is not completely without merit: The US NSA did try to forbid the publication of Schneier's Applied Cryptography in the 1990s and in the 1980s, the German Federal Intelligence Services were particularly interested in the power of computer viruses. Pars pro toto, we mention Stoessel and the BND's Rahab project.

LinkLeave a comment

Comments:
From:(Anonymous)
Date:March 30th, 2009 - 04:31 pm
(Link)
лучше новыми постами все таки, а то можно пропустить чего.