Mini Mutation Engine v1.0 12-01-94 ArChung Lai, Chung-Li, Taiwan Super Mini Mutation Engine: [Total length 275 bytes] [Preface:] At the beginning of the year, classmate kk suddenly gave me a mutation engine to play with. I felt it was a good idea, but it's too fat. After I got my credit, still nobody has a smaller engine, so I wrote one of my own. Suddenly, I feel it is so tiny. Actually, I can make it smaller by about 100 bytes or so, I merely made it more fun... [parameter:] extrn mime:near, emime:near ES:0 => store decryption routine + encrypted stuff segment (from ES:0) DS:SI => point to stuff that u want encrypted (generally point to the beginning of the program) CX = the length of stuff that you want encrypted (to get total length via OFFSET EMIME ) BX = offset of decrypt routine the length of the decryption routine made by this engine will be within 150 bytes, so you merely allocate the size of memory: the length of stuff that you want encrypted + the length of this engine + 150 bytes or so. (notice on TSR type) [return:] DS:DX => decryption stuff + encrypted stuff DS:DX points to decryption stuff + encrypted stuff after return, this is convenient for the Int 21h writing function. CX = the length of decryption stuff + encrypted stuff It's also convenient for the Int 21h writing function. Registers are preserved aside from the above registers and AX. [note:] You don't need to disassemble it with Sourcer, I will release the source code and append the associated development document for DIY. This is 'cause I have never released stuff that appended source code, it was modified and released once more by some kids, they even modified the version. reference: 8086/8088 Microprocsssor, architecture, programming and interface tech (Chapter 3)