Ŀ
 Presents
  ڿĴ VMag, Issue 3, 1 January 1999
  
                                                 ͻ
                                                      Version: 1.0           
                                                      Release: 27-Nov-1998y  
                                                   Created by: Hard Wisdom   
                                                 ͼ

[27-Nov-1998y][v1.0]
 ࢮ砫쭮 ᮧ 䠩 ( ᮢ Psychomancer'a)



              ⮤  ᮡ   
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[] ঠ
~~~~~~~~~~~~~
 [0] ॠ㫠..............................................................___
 [1]    ணࠬ ᯥ祭.............................___
 [2]  ⮤ ஢(⨢⢨) () .............___
  [2.1]    IDC ணࠬ IDA-Pro v3.7..........................___
  [2.2] 祤-祤...   ஢ ᢥ.....................___
  [2.3]   ,   ,    ?.........................___
 [Z] 祭.............................................................___


[0] ॠ㫠
~~~~~~~~~~~~~
   ⠪,      ᬮ      ஥   ⢮   ⥬
 ଠ樨 饭  ⥬      (  뢠  
Reverse-Engineering,   ᯮ짮    ନ,      ࠢ
 ᥣ). ,     㪨,   ।襭  ᠭ  ,
ਬ,    ன ணࠬ,   ,    訩
⮤ 㦥 ।: GNU's General Public License


[1]   ணࠬ ᯥ祭 ()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   筮      ஡  ᪠  饩   ଠ樨   
㭪樮஢ ࠧ筮 ணࠬ  ᯥ祭.      ᫮
 ஫ 㬥樨   ,  ⬥   
 㬥⭮ ⮤ Reverse-Engineering,          ᯮ
  ᭮  蠥 .   ⠭ ਢ   㬥⮢
  ⨢  ࠣ ࠫ ᯥ, ⠢  㤠筨. ⠪:
      2  㯯 ⮤:  ᪨    ᪨.
 ᪨ ⮤  祭 ଠ樨    ணࠬ  
  (室, ୮  ..)  ⮬   ᢮,    ࠢ,  
㫨஢  ᫮  ᮢ  ᪠   ॡ㥬   ଠ樨.   ਬ:
᪮/   ணࠬ ࠣ "Out  61h,Al"    "Nop;  Nop"  
"⪫"   砭  PC  Speaker  (⥪    Out  61h,Al
 । 祫  祫  ਭ 襭   ஢  
⪠  䨪樨).   㤥, ᫨   뢮  ⥬  맮:
Mov Ax,0E07h; Int 10h ? ᫮, 室 㤥 뤠  ன    
  .. ᪨  - ⢫  ⮪  믮  
ணࠬ,  ⠪     室/室    (ॣ,    
..). ᫮,    室  쭠  ଠ
 ᫥㥬 ணࠬ:  ୮    -  楫      ଠ
᪠ 䠩 + 樮 㦥;   室  ⥪⮢  -    +
筮   㦥.   ⥬     ந室     ⥯     㬥襭
। ਬ⥫쭮  ᫥㥬 ணࠬ.   ,  
 襭    ᥣ  ணࠬ (    
 室 ⥪, ⠪    ୠ  (⪮஢)  )  ।
祭,  ⮬  筮              
砫쭮 ਡ  饬 ࠣ .


[2]  ⮤ ஢  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     讥  ⢮  ।  ஢    ,  祬,
㤠묨   ⮫쪮 ᪮쪮,   -  寧.    
⮢ த, ୮, ᫠  ,    ਢ  ᪮쪮  ਬ஢
ࠡ   - .


[2.1]    IDC ணࠬ IDA-Pro v3.7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ࠪ⨢  ᥬ  IDA-Pro  ᯮ   ७   몮
ᨭ⠪᪨ 筮  宦   .    筮  ,
⮫쪮  ᨨ 3.7  ⠫ 筮 ⮩稢   㭪樮쭮  .  
⢥ত ᢮ ᫮   ਢ  2  ணࠬ    IDC,    䨣
蠫  ⥬  IDA v3.5 ( 뤠 ४ १).

[Begin: ERRIDC_1.PAS]
Program IDC_Test;

Procedure TestProc;
Var I:Integer;
Begin
 WriteLn('static Test() {');
 For I:=1 To 2100 Do Begin
  WriteLn(' if (',I,'!=',I,') Message("(',I,') - <>\n");');
 End;
 WriteLn('}'); WriteLn;
End;

Begin
 TestProc;
 WriteLn('static main() {');
 WriteLn(' Message("IDC Crazy Conditions!\n"); Test();');
 WriteLn('}'); WriteLn;
End.
[End: ERRIDC_1.PAS]

[Begin: ERRID_2.PAS]
Program IDC_Test;

Procedure TestProc;
Var I:LongInt;
Begin
 WriteLn('static Test() {');
 WriteLn(' auto i;');
 Write(' i=0');
 For I:=0 To 31 Do Write('+(',I);
 For I:=0 To 31 Do Write(')');
 WriteLn(';');
 WriteLn('}'); WriteLn;
End;

Begin
 TestProc;
 WriteLn('static main() {');
 WriteLn(' Message("IDA Stack overflow!\n"); Test();');
 WriteLn('}'); WriteLn;
End.
[End: ERRIDC_2.PAS]

ਬ 筮  ( 樨 䠩 IDC   ࠭,      䠩  -
ᯮ ७ࠢ ᮫,  ਬ  ⠪:  ERRIDC_2.EXE  >BUG2.IDC),
ਢ    ९  ⥪  ᯮ⥫  㠫쭮  設  IDC    
४⭮ 樨.   㢥७,     3.7    ᢮  
  ⪮. ,  ⮤  㣫  Borland  Pascal
v7.0      㤠.  ⪮  ᫥    ⠪       ࠧ
ᨬ쭮 ᪮஢ ணࠬ ( 64 ),  ⠪    
⪠ ᤥ    ᥬ஢, ⠪   訡  
⮫쪮  ࠧ.
     㦥  ਫ    ࠧ  ⮤    .    ஡㥬
। ࠧ饭 楤 ஢  ᫥㥬 䠩.  ࠢ,  
饭 ⮤ ஢ by  obscurity  ᯮ    XOR,  
᫥ ,  XOR  ᯮ   ⪨  ॣ஢  (ਬ
 : XOR AX,AX; SUB AX,AX    .)  ஡㥬  㫨஢  ᫥騩
: "  XOR  ࠧ묨 ॣࠬ  ⢥ ࠭!"    
⠪ ࠧ:

[Begin: _HW_LIB.IDC]
// ------------------------------------------------------Main Library
//
// ---------------------------------------------Find the XOR commands
static findxor(from) {
 auto ea,sz,s,op1,op2;
 ea=from; for (;;) {
  s=GetMnem(ea); op1=GetOpnd(ea,0); op2=GetOpnd(ea,1);
  if (s!="" && s=="xor" && op1!=op2) {
//    ^^^^^^^^^^^^^^^^^ ------------------------------------ IDA Suxx
   Message("Necessary XOR placed at address: "+
           form("%.8lX",ea)+"h   In format: "+s+" "+op1+","+op2+"\n");
   Jump(ea); return ea;
  } sz=ItemSize(ea); ea=ea+sz;
  if (ea>=MaxEA()) return 0;
 }
}
// ------------------------------------------------------------------
[End: _HW_LIB.IDC]

[Begin: _FNDXOR.IDC]
// ---------------------------To find one XOR with different operands
#include <idc.idc>
#include <_hw_lib.idc>

static main() {
 Message("'FIND XOR' has been loaded. Researching. . .\n");
 if (!findxor(ScreenEA()))
  Message("Not found, researching process was terminated.\n");
}
// ------------------------------------------------------------------
[End: _FNDXOR.IDC]

[Begin: _FNDXORS.IDC]
// --------------------------To find all XORs with different operands
#include <idc.idc>
#include <_hw_lib.idc>

static main() {
 auto i,n; n=ScreenEA(); i=MinEA();
 Message("'FIND XORs' has been loaded. Researching. . .\n");
 while (i=findxor(i)) i=i+ItemSize(i);
 Message("No more found, researching process was terminated.\n");
 Jump(n);
}
// ------------------------------------------------------------------
[End: _FNDXORS.IDC]

 IDA v3.7      <F2>    㪠    ॡ㥬  䠩:
_FNDXOR.IDC  ᪠    _FNDXORS.IDC    ᪠  ࠧ  
. ⠪, 쬥 ਬ VSERVER.VXD,    ஢묨  ᠬ
 Microsoft Network 쭮 ࠡ祩 ⠭樨  ࠢ W95.  VSERVER.VXD
112892 bytes v4.00.1111 ( ᪮ ). ⠪,   :

Compiling file 'C:\HW\LANG\IDAPRO\idc\_FNDXORS.IDC'...
Executing function 'main'...
'FIND XORs' has been loaded. Researching. . .
Necessary XOR placed at address: 00000656h   In format: xor dh,[edi+9]
Necessary XOR placed at address: 0000065Ch   In format: xor [edi+9],dh
Necessary XOR placed at address: 00009581h   In format: xor al,cl
Necessary XOR placed at address: 00009C35h   In format: xor ecx,esi
Necessary XOR placed at address: 0000DB10h!!!In format: xor bl,dl
Necessary XOR placed at address: 0000DB43h!!!In format: xor bl,dl
Necessary XOR placed at address: 00012103h   In format: xor [edx],edi
Necessary XOR placed at address: 000126BCh   In format: xor [esi],ebp
Necessary XOR placed at address: 000126BEh   In format: xor [eax],al
Necessary XOR placed at address: 000126C7h   In format: xor bl,cs:[eax+30h]
Necessary XOR placed at address: 000126CBh   In format: xor [edx],dh
Necessary XOR placed at address: 000126F0h   In format: xor [esi],ch
Necessary XOR placed at address: 000126F2h   In format: xor [edx],esi
Necessary XOR placed at address: 000134FCh   In format: xor ah,[ebp+6Eh]
Necessary XOR placed at address: 00013508h   In format: xor [ebp+6Eh],esp
Necessary XOR placed at address: 00013578h   In format: xor al,[eax]
Necessary XOR placed at address: 00013580h   In format: xor ah,[ebp+6Eh]
Necessary XOR placed at address: 0001358Ch   In format: xor al,[eax]
Necessary XOR placed at address: 00013594h   In format: xor ah,[ebp+6Eh]
Necessary XOR placed at address: 000135A0h   In format: xor [eax],eax
Necessary XOR placed at address: 000135A8h   In format: xor [ebp+6Eh],esp
Necessary XOR placed at address: 000135B4h   In format: xor [eax],eax
Necessary XOR placed at address: 000135BCh   In format: xor [ebp+6Eh],esp
No more found, researching process was terminated.

譮? ?  <ESC>  ᬮਬ  ᯨ᮪:  ⮠  IDA  筮
ਢ    ࠡ뢠    ⥪  (ࠪ㥬    )  ७쪮
ய᪠, ⠪: DB10h  DB43h - 祭  ᭮,  4    ࠡ뢠  -
 ࠣ ⮢⢠ ⨬樨 譮  ;-) -, 30 ᥪ.  
  :

    0000DB2F             mov     dl, [ebp+arg_0]
    0000DB32             mov     eax, [ebp+arg_4]
    0000DB35             mov     ecx, [ebp+arg_8]
    0000DB38   LOC_DB38:
    0000DB38             mov     [ebp+var_1], dl
    0000DB3B             ror     [ebp+var_1], 1
    0000DB3E             mov     dl, [ebp+var_1]
    0000DB41             mov     bl, [ecx]
    0000DB43             xor     bl, dl
    0000DB45             mov     [eax], bl
    0000DB47             inc     ecx
    0000DB48             inc     eax
    0000DB49             dec     esi
    0000DB4A             jnz     short LOC_DB38

, , ,   .  ⠪  ࠭  ॣ ஢  ஫
    ᮡ⢥  ஢  .  ணࠬ  PWLHACK   v4.0   
 ஢  ᬮ . , 㬠,   ⮬  .


[2.2] 祤-祤...   ஢ ᢥ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ⠪,        ᠫ  祤,  ॣ     .   
堪 ஢ન 䨣 (⮦ ࠧ㬭). ᫮,      ⮭,  ⠬  
ࢥ.     頫   祬?  , ਬ:

[Begin: LASM20R.C]
#include <string.h>
#include <stdio.h>

char* MakeReg(unsigned char* UserName, unsigned char* UserId,
                                       unsigned char* Password) {
 unsigned long S1=13,S2=0;
 while (*UserName) { S2+=S1*(*UserName++); S1=(S1+ 37)*3; }
 while (*UserId  ) { S2+=S1*(*UserId++  ); S1=(S1+197)*7; }
 S2%=0xF4240; sprintf(Password,"%lu",S2); return Password;
}

void main(int argc, char* argv[]) {
 char s1[256],s2[256],s3[256];
 puts("(C) 25-Nov-1998y by Hard Wisdom \"LASM v2.0 KeyGen\" v1.0");
 puts("                                ~~~~~~~~~~~~~~~~~~");
 if (argc<2) { printf("User name: "); gets(s1); s1[strlen(s1)]=0;
 } else strcpy(s1,argv[1]);
 if (argc<3) { printf("  User ID: "); gets(s2); s2[strlen(s2)]=0;
 } else strcpy(s2,argv[2]);
 printf("<Password: %s>\n",MakeReg(s1,s2,s3));
}
[End: LASM20R.C]

 ਬ 祣    "Lite  Assembler",      
ﯮ,  ᮢ⨬   MASM  v6.0    ..    祬  ᭮  ஡
  ஢ப  ॣ樮  祩?   ࠢ쭮,         (஢ப)
ਬ.   蠥  ࠡ    ⮫쪮        (
㯠 ),    室 ⥪⮬ ⠪ . (  ᢮  ६      
ࠡ⠫  ᪠  騬  ᪢  MACRO-11  (ᥬ),  ⠪    
㯠 Turbo C  ஬ ⢮ 㣨 த⮢,  ᫨  ᯮ  
६?    PLM,  SAT    .).  ਢ  ਬ  -,  饣
襮ᠭ ஡.  ,   ___,      
頥 믮 ࠫ쭮  2  樨    (אַ  -  ஢  
⭮ - ஢). ⠪,  ਬ 栬:

[Begin: HWCRKMEG.C]
/*******************************************************************/
/* (C) by Hard Wisdom "The CrackMe Generator from Hard Wisdom"     */
/*                                        v1.0 from 06-Apr-1998y   */
/* Status: Alpha version                                           */
/*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/*-----------------------------------------------------------------*/
void str2file(FILE* f, char* s) {
 fprintf(f,"%s\n",s);
}

/*-----------------------------------------------------------------*/
void simpleop(FILE* f) {
 int op1,op2,op3; unsigned long op0;
 op1=random(0x10); op2=random(0x10); op3=random(0x10);
 op0=((unsigned long)random(RAND_MAX)<<10)+random(RAND_MAX);
 switch (random(15)) {
  case 0: fprintf(f," w[%d]+=0x%lX;\n",op1,op0); break;
  case 1: fprintf(f," w[%d]-=0x%lX;\n",op1,op0); break;
  case 2: fprintf(f," w[%d]^=0x%lX;\n",op1,op0); break;

  case 3: fprintf(f," w[%d]+=w[%d]^0x%lX;\n",op1,op2,op0); break;
  case 4: fprintf(f," w[%d]^=w[%d]+0x%lX;\n",op1,op2,op0); break;
  case 5: fprintf(f," w[%d]-=w[%d]^0x%lX;\n",op1,op2,op0); break;
  case 6: fprintf(f," w[%d]^=w[%d]-0x%lX;\n",op1,op2,op0); break;

  case 7: fprintf(f," w[%d]=w[%d]^w[%d];\n",op3,op1,op2); break;
  case 8: fprintf(f," w[%d]=w[%d]+w[%d];\n",op3,op1,op2); break;
  case 9: fprintf(f," w[%d]=w[%d]-w[%d];\n",op3,op1,op2); break;

  case 10: fprintf(f," w[%d]++;\n",op1); break;
  case 11: fprintf(f," w[%d]--;\n",op1); break;

  case 12: fprintf(f," w[%d]^=(w[%d]<<1)^(w[%d]>>1);\n",op3,op1,op2); break;
  case 13: fprintf(f," w[%d]^=(w[%d]<<3)^(w[%d]>>3);\n",op3,op1,op2); break;
  case 14: fprintf(f," w[%d]^=(w[%d]<<9)^(w[%d]>>9);\n",op3,op1,op2); break;
 }
}

/*-----------------------------------------------------------------*/
void _combinedop(FILE* f, int level) {
 char b_op[4]="+-^"; char u_op[8][3]={"-","~","--","++","","","",""};
 int op,i,ii,n; char lspaces[256]; unsigned long op0;

 op0=((unsigned long)random(RAND_MAX)<<10)+random(RAND_MAX);
 for (i=0;i<=level;lspaces[i++]=' '); lspaces[i]=0;
 fprintf(f,"\n%s(\n%s ",lspaces,lspaces);
 op=random(0x10); i=random(8); fprintf(f,"(%sw[%d])",u_op[i],op);
 n=random(10)+5; while (n--) { op=random(0x10); i=random(8); ii=random(3);
  fprintf(f,"%c",b_op[ii]);
  if (random(10)>8 && level<=3) _combinedop(f,level+1);
  else if (random(10)>5) fprintf(f,"0x%lX",op0);
  else fprintf(f,"(%sw[%d])",u_op[i],op);
 } fprintf(f,"\n%s)\n%s",lspaces,lspaces);
}

void combinedop(FILE* f) {
 int op; op=random(0x10); fprintf(f," w[%d]=",op);
 _combinedop(f,0); fprintf(f,";\n");
}

/*-----------------------------------------------------------------*/
void trivialops(FILE* f, int mincnt, int dev) {
 int i,i0; i0=random(dev+1)+mincnt; for (i=1;i<=i0;i++)
  if (random(10)>8) combinedop(f); else simpleop(f);
};

/*-----------------------------------------------------------------*/
void blockop(FILE* f,int level, int mincnt, int dev) {
 int i,i0,n,op,flg; i0=random(dev+1)+mincnt;
 op=random(0x10); flg=random(2); n=random(14)+10;
 if (flg) fprintf(f," if (w[%d] && %d) {\n",op,n);
 else fprintf(f," for (i[%d]=0;i[%d]<%d;i[%d]++) {\n",level,level,n,level);
 for (i=1;i<=i0;i++) {
  if (random(10)>8 && level<0x0F) blockop(f,level+1,mincnt,dev);
  else trivialops(f,1,0);
 } fprintf(f," }\n"); 
}

/*-----------------------------------------------------------------*/
void funcop(FILE* f, int level) {
 fprintf(f,"void flow%d(unsigned long from, unsigned long* to) {\n",level);
 str2file(f," unsigned long w[0x10]; int i[0x10];");
 str2file(f," w[0]=from;");
 str2file(f," for (i[0]=1;i[0]<=0x0F;w[i[0]++]=w[0]);");
 blockop(f,0,4,4); blockop(f,0,4,4);
 blockop(f,0,4,4); blockop(f,0,4,4);
 str2file(f," for (i[0]=1;i[0]<=0x0F;w[0]^=w[i[0]++]);");
 str2file(f," *to=w[0];}");
}

/*-----------------------------------------------------------------*/
void maincode(FILE* f) {
 int i,i0;
 randomize(); i0=random(6)+10;
 for (i=1;i<=i0;i++) funcop(f,i);
 str2file(f,"");
 str2file(f,"int check_n_get(char* name, unsigned long ser,");
 str2file(f,"                            unsigned long* res) {");
 str2file(f," unsigned long hash; int i;");
 str2file(f," hash=0x00FEED00; while (*name)");
 str2file(f,"  hash+=((hash^*name)<<3)+((hash^*name)>>3),name++;");
 str2file(f,"");
 for (i=1;i<=i0;i++) {
  fprintf(f," flow%d(hash,&hash); flow%d(hash,&hash);",i,i0-i+1);
  fprintf(f," printf(\"\");\n");
 } str2file(f,"");
 str2file(f," *res=hash; return *res==ser;");
 str2file(f,"}");
}

/*-----------------------------------------------------------------*/
void generate(FILE* f) {
 str2file(f,"/*-----------------------*/");
 str2file(f,"/*---start of crack me---*/");
 str2file(f,"/*-----------------------*/");
 str2file(f,"#include <stdio.h>");
 str2file(f,"");
 maincode(f);
 str2file(f,"");
 str2file(f,"void main() {");
 str2file(f," int r;");
 str2file(f," unsigned long ser; char name[256];");
 str2file(f," printf(\"           Accepted only KEYMAKERS !\\n\");");
 str2file(f," printf(\"\\n\");");
 str2file(f," printf(\" \\\"HW-CrackME\\\" v1.0\\n\");");
 str2file(f," printf(\" ~~~~~~~~~~~~ (C) 06-Apr-1998y by Hard Wisdom\\n\");");
 str2file(f," printf(\"\\n\");");
 str2file(f," printf(\"  Registration Name: \");");
 str2file(f," gets(name);");
 str2file(f," printf(\"      Serial Number: \");");
 str2file(f," scanf(\"%lX\",&ser);");
 str2file(f," printf(\"           Checking: \");");
 str2file(f," r=check_n_get(name,ser,&ser);");
 str2file(f," printf(\" Ok\\n\");");
 str2file(f," if (!r)");
 str2file(f,"  printf(\"  Your serial number is NOT Accepted!\\n\");");
 str2file(f," else");
 str2file(f,"  printf(\"  Well done, You hack it !!! Wise Guy.\\n\");");
 str2file(f," printf(\"\\n\");");
 str2file(f," printf(\"            FidoNet: 2:461/133.69\\n\");");
 str2file(f,"");
 str2file(f,"#ifdef crackhw");
 str2file(f," printf(\"  Real serial number is %.8lX\\n\",ser);");
 str2file(f,"#endif");
 str2file(f,"}");
 str2file(f,"/*-----------------------*/");
 str2file(f,"/*---!stop of crack me---*/");
 str2file(f,"/*-----------------------*/");
}

/*-----------------------------------------------------------------*/
void main(int argc, char* argv[]) {
 FILE* f;
 printf("(C) 06-Apr-1998y by Hard Wisdom \"The CrackMe Generator\" v1.0\n");
 printf("                                ~~~~~~~~~~~~~~~~~~~~~~~\n");
 if (argc<=1) {
  printf("USAGE: HWCRKMEG.EXE NameOfSourceFile - to generate in...\n");
  return;
 };

/*-----------------------------------------------------------------*/
 if ((f=fopen(argv[1],"w"))==NULL) {
  printf("Can't create output file '%s'!\n",argv[1]);
  return;
 }; generate(f);
 if (ferror(f)) {
  printf("Disk I/O error occured during generation!\n");
  return;
 }; fclose(f);                                     /* Generated OK */
 printf("Well done! ;-) Use the TC to compile it.\n");
}
/*******************************************************************/
/*                             The End                             */
/*******************************************************************/
[End: HWCRKMEG.C]

 㬠,  祤    砥  㤥    ஡筮,    
堪, ᪮쪮    ,  ⮦    ᢮    ⨢⢨.  
:   TC v2.0  ஥:   砩,    
 ᬮ  ᣥ஢      孨᪨  稭  (᫨誮
  㡨      ᫨誮  让   䠩),      室
묨  ॣﬨ.    ᮦ,  ਢ    ⮤  ᮧ
室 ⥪     ।᪠㥬,    
⮬᪨ ஢ ᪨ ࠪ⨪ 祭 .


[2.3]   ,   ,    ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    㬠,      ணࠬ  "      v8.0",  祭  宩
⥪⮢ । ⭨  .  ,    ⠪   
 窱  㢠 : NOR (C) Solar  Designer    NORAC
(C) Code Master.   ᥩ   ⮬:  믮  ,  
    祬    ⠫  (,      
ࠬ).
    㦥 ਫ,      ன  ணࠬ    ᯮ
।   砫쭮   ଠ樥   (楫      믮,   
⭮).  , ᫨         ⮣?!  ,  ⮣  設⢮
⨫ (SoftIce, IDA, HIEW, Sourcer e.t.c.)  ᯮ, ਩  
- ᢮.  ⠪   ᢮  ६:  DeClipper,  Valcyria,  ReFox,
DeVB,  JAD,  DeInsh    .  ,  ᭮  ⬥,    ᠬ      ᥡ
ᯮ짮   ⭮                    ࠭⮬
"뢠" , ਬ஢ ⮬ - .  ᬮਬ  堭  ஢ન
祩 ணࠬ "   "  (W&D).        ᥡ    ,
ਢ ⨭ - ஢ન ਩  楫:

[Begin: WD80WOW.LST]
   This part of code is used far away in program
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     0:   11  0 71142  LOAD  R2,18318
     4:   15           MOV   R4,R2
     5:   19           LOAD  R2,<CONST>
     6:   13           MOV   R3,R2
     7:   14           MOV   R2,R4
     8:    5           DEC   R2
     9:    6           INC   R3
    10:    2           BEQ   R2==0,13
    11:    1  8        JMP   8
    13:   11  0  1 87  LOAD  R2,343
    17:   10           MUL   R2,R3
    18:   13           MOV   R3,R2
    19:   18           SUB   R2,R3
    20:   20           ROLO  R4,R3,R2
    21:   11  1 61  7  LOAD  R2,81159
    25:   20           ROLO  R4,R3,R2
    26:   18           SUB   R2,R3
    27:    8           INC   R4
    28:    3           BEQ   R2>0,31
    29:    1 33        JMP   33
    31:    1 26        JMP   26
    33:   13           MOV   R3,R2
    34:   11  1 62218  LOAD  R2,81626
    38:   23           ADD   V2,V3
    39:   43           NOP
    40:   56           NOP
    41:   71           NOP
    42:   82           NOP
    43:   20           ROLO  R4,R3,R2
    44:   20           ROLO  R4,R3,R2
    45:   11  0 65 23  LOAD  R2,16663
    49:   20           ROLO  R4,R3,R2
    50:   20           ROLO  R4,R3,R2
    51:    2           BEQ   R2==0,54
    52:    1 56        JMP   56
    54:    1 60        JMP   60
    56:    5           DEC   R2
    57:   20           ROLO  R4,R3,R2
    58:    1 51        JMP   51
    60:   20           ROLO  R4,R3,R2
    61:   20           ROLO  R4,R3,R2
    62:   23           ADD   V2,V3
    63:   22           MOV   R1,R2
    64:   21           HALT  R1

   PreCalc1
   ~~~~~~~~
    65:   82           NOP
    66:   11  1134160  LOAD  R2,100000
    70:   13           MOV   R3,R2
    71:   19           LOAD  R2,<CONST>
    72:   20           ROLO  R4,R3,R2
    73:   19           LOAD  R2,<CONST>
    74:   18           SUB   R2,R3
    75:   20           ROLO  R4,R3,R2
    76:   20           ROLO  R4,R3,R2
    77:   18           SUB   R2,R3
    78:    8           INC   R4
    79:    3           BEQ   R2>0,82
    80:    1 84        JMP   84
    82:    1 77        JMP   77
    84:   14           MOV   R2,R4
    85:    5           DEC   R2
    86:    2           BEQ   R2==0,89
    87:    1 95        JMP   95
    89:   11  0 49  2  LOAD  R2,12546
    93:    1185        JMP   185
    95:    5           DEC   R2
    96:    2           BEQ   R2==0,99
    97:    1105        JMP   105
    99:   11  0 37234  LOAD  R2,9706
   103:    1185        JMP   185
   105:    5           DEC   R2
   106:    2           BEQ   R2==0,109
   107:    1115        JMP   115
   109:   11  0 47 49  LOAD  R2,12081
   113:    1185        JMP   185
   115:    5           DEC   R2
   116:    2           BEQ   R2==0,119
   117:    1125        JMP   125
   119:   11  0 58  1  LOAD  R2,14849
   123:    1185        JMP   185
   125:    5           DEC   R2
   126:    2           BEQ   R2==0,129
   127:    1135        JMP   135
   129:   11  0 45128  LOAD  R2,11648
   133:    1185        JMP   185
   135:    5           DEC   R2
   136:    2           BEQ   R2==0,139
   137:    1145        JMP   145
   139:   11  0 31 10  LOAD  R2,7946
   143:    1185        JMP   185
   145:    5           DEC   R2
   146:    2           BEQ   R2==0,149
   147:    1155        JMP   155
   149:   11  0 53 97  LOAD  R2,13665
   153:    1185        JMP   185
   155:    5           DEC   R2
   156:    2           BEQ   R2==0,159
   157:    1165        JMP   165
   159:   11  0 34218  LOAD  R2,8922
   163:    1185        JMP   185
   165:    5           DEC   R2
   166:    2           BEQ   R2==0,169
   167:    1175        JMP   175
   169:   11  0 39163  LOAD  R2,10147
   173:    1185        JMP   185
   175:   11  0 62  9  LOAD  R2,15881
   179:  185           NOP
   180:  178           NOP
   181:  123           NOP
   182:   82           NOP
   183:   94           NOP
   184:   64           NOP
   185:   75           NOP
   186:   43           NOP
   187:   56           NOP
   188:   22           MOV   R1,R2
   189:   21           HALT  R1

   PreCalc2
   ~~~~~~~~
   190:   42           NOP
   191:   52           NOP
   192:   87           NOP
   193:   19           LOAD  R2,<CONST>
   194:   42           NOP
   195:   52           NOP
   196:   87           NOP
   197:   20           ROLO  R4,R3,R2
   198:   11  0  0 76  LOAD  R2,76
   202:   82           NOP
   203:    8           INC   R4
   204:   75           NOP
   205:    5           DEC   R2
   206:   64           NOP
   207:    6           INC   R3
   208:  132           NOP
   209:    3           BEQ   R2>0,212
   210:    1214        JMP   214
   212:    1202        JMP   202
   214:   12           MOV   R2,R3
   215:    1180        JMP   180
   217:   19           LOAD  R2,<CONST>
   218:   15           MOV   R4,R2
   219:    4           INC   R2
   220:    6           INC   R3
   221:    8           INC   R4
   222:   11  0 10  0  LOAD  R2,2560
   226:   20           ROLO  R4,R3,R2
   227:   22           MOV   R1,R2
   228:   18           SUB   R2,R3
   229:    3           BEQ   R2>0,232
   230:   29           NOP
   231:   21           HALT  R1
   232:   52           NOP
   233:   24           FUCK
   234:  255           NOP

[End: WD80WOW.LST]

, , ᥬ .  맮    -    室
। ࠬ <CONST>,   室  HALT  頥  
१. ⭮ ,   砥 ਬ 㥬  -
룫廊 ᪮쪮 ࠭.   襫 襣  ਬ,  祬  믮
XLAT  ⠡窥. 8-()    , ⠪   ࠭  룫  ⪨
NOP'  ,      obscurity.        ᫮  ਢ
᫥ ⥫ ਠ 祣.

[Begin: WD80K.C]
// --------------------------------------------------------
// (C) 08-Feb-1998y by Hard Wisdom "WD v8.0 KeyMaker" v2.0
// --------------------------------------------------------

#include <stdio.h>
#include <string.h>

void main(int argc, char* argv[])
{
 char s[20]="";
 unsigned long key; long num; int i;
 unsigned int dk[10]={19559,27409,13769,2354,8486,
                      13576,13467,11689,14889,27106};
 unsigned int da[10]={12546,9706,12081,14849,11648,
                      7946,13665,8922,10147,15881};

 printf("(C) 08-Feb-1998y by Hard Wisdom \"WD v8.0 KeyMaker\" v2.0\n");
 printf("                                ~~~~~~~~~~~~~~~~~~\n");
 if (argc>1) strcpy(s,argv[1]);
 else {printf("Enter the product number: "); scanf("%s",&s);};
 strupr(s); if (strlen(s)<3 || s[1]!='-') {
  printf("Error: bad product number prefix, must be 'X-' where X is alpha!\n");
  return;
 }; if (s[0]!='E')
  printf("Warning: generation can be incorrect, required prefix 'E-' only!\n");
 strcpy(s,&s[2]); sscanf(s,"%lu",&key);
 key=((key / 10)-dk[key % 10]+892)*5/4+7546;
 if (key<0 || key>99999) {
  printf("Error: invalid product number has been entered!\n");
  return;
 };
 printf("Well, generating registration numbers for %s...\n",s);
 for(i=1;i<11;i++){
  num=key-da[i-1]; if (num<0) num=num+100000*i; else num=num+100000*(i-1);
  printf(" %2d%s registration key is %6lu\n",i,i==1?"st":i==2?"nd":"th",num);
 }; printf("Make your choice ;-) Software must be FREE!");
}
// --------------------------------------------------------

[End: WD80K.C]

쬠 ,  ⠪ ?   堪 W&D 㪠 祭 ਢ쭠,    
⮫쪮 ⢮ ⮬,  쬥 ࠢ      ⨪    
ணࠬ. , , ਬ: W&D 樮     ᥡ    䠩  
᪥  (  䨪஢  ᬥ饭)    ⠥           ⠡
뢠! ᫨ 䠩  ਣ ,     浪,  ந
訡  ⥭.      㤥,  ᫨  䠩  ᯠ?  ࠢ쭮,  
뢠   墮⮬ ணࠬ.     ࠢ!  
 ⮫쪮  砫,  騥  -  㦠  ⫠稪,  ⠬      
ᬮ.

[Z] 祭
~~~~~~~~~~~~~~
   ,   뫮 ᭮.  㬠,      饬  ⠭  த
   䠩.  ⢥,            㣨  ᮯ
ਠ     譥 ࠭窥.        
⨢⠢ ᢮ ᮡ NASTYxxx.TXT (to URL: please  ;-)    ᨬ  
.

           Home Page: www.geocities.com/SiliconValley/Hills/7827
              E-Mail:         hardwisdom@geocities.com
