Kris Kasperski                      2:5063/61.8     08 Feb 99  20:45:00
ॢ 砫 ORC


                                 .
                                --------------

                  1.   ?   ⢮.
                 ============================================

                         BAR-CODES  .
                         ----------------------------

[BAR-CODES]
     p  ᥣ        ᥤ .
 p⮢        ⮫쪮   pp,  ⠪   ᥩ p㣮
 p㦠饩    p樨  p樨      p . 뢠
 ⢥p  楯  ᨫ    p, -   ᢮. H 
   ⠪    p p p⢥ {p祬  騬
   襩 p.  ...  宬 砥 :-) - p. PNC}
           p  p      ꥪ  ᥬ
 p㦠饬 .  p ,  p⨥ ⮣ 㦠᭮ ⢠ 
  p  ,   "p뢠騥" 堭.
      p p   ᥪp⮢   ⠪   ᥪp⮢. , 
 ᥣ  ⠪  p      㯮p塞,        
 砥  ,      p ,     㤨⥫쭮 㯭
  !
      pp  pp - "BAR-CODE".  p⪨ ,     
    p  p    (筮      ᨨ    ⠪    
 p           - p. KPNC).     p? 
     ᬮ  ⢮  ᥡ  ᢮, ᫨   p
   .  p  㤨⥫  ᢮ p. H᫥  묥p襩
 p  ᫥⥫,    饩  祣 饣  ⥫묨 p 
 p묨  p㦠騬  . (, , .  ᮣᥭ. - p.
 NC) p ᥣ    p 祢,   ⠬, 
 p㣨      ⢠.

 [BAR-. ]
   筥    让 p. pᠫ p  (UPC) 
 ⢮    p- p USA.  p⢠ 뫨
 ᪮p,  筮,   p樨  p,  
 㢮    p,     룮. (,  룮,  
  祭. p. NC).
   ᯥ  ᪫  p⨥   European Article Numbering System (EAN),
 ᨬ쭮 p⠢ UPC,  ᯮ짮  p  ⠫쭮 p.
 ,       砥 p BAR-CODE ᨬ (p,  ? -
 p.  NC)    ᮡ⢥  p      ᪥.  UNP/EAN  ,
 ᯮ㥬    p  ⮢p,     p , ⮬
   Interleaved   2  5.  -39- 砥  ᥡ 䠢  p孥
 pp,  p    ᪮쪮  ᨬ.    128  砥    ᥡ  
 ⠥    ⠥  ASCII-c.  H    2-D  . 
 ᯥ樠   pאַ㣮   ,   뢠  "⥪"  BAR-  
 p.       ⥫쭮  p樨, 祬 ⠭p
 BAR-.    p  ᯥ樠쭮  ⥭, p ⮨ p 筮
 ᪠p.   p᪠  p  ⠭p⭮      ⢠
 p,     20-25  ᨬ   p⥫ 㬮.  ⮢p
 ,  p饣  , ᯮ p . (p  
 ᨨ  p    襫    ⮬    ᪠. p - NC).
 p ID - p  BAR- 㭨 䨪p p.
     p⥫  ᭠ p 室 p ᯨ᪮ ᢮ ⮢p
  p   , p      ⥬.
 H    ⮢p  BAR-      㯥pp⠬ "
 ",  ᯮ  _p_   ⥬,    ᮢ 
 ⠭p⭮.  (?  A?  -  p.  NC)  ⮣ 筮. H ⮦,
  .
      BAR-    ⮫쪮  , p 室  뢠 "⮬᪠
 p   設"    p ⮨. (----,  祬
     ᤥ  ⠪  設     ? - p. NC). p p⠢
 (⮫쪮  p⠢,   㤥 p⨢ ⢨ (   
  ⮬,  ⠪ 設   ⠥ _⮫쪮_ p⠢ p. KPNC),
     p  筮  ᠬ⥫쭮  ,  ᪠,    pﭭ
 p⢥    , p騩 設,   p襥, p᪮,
  --祭 p .
       㯠  p 設, p   pp:" ⠪-
 ⮨  ⮫쪮-  ⮫쪮-)... H   㬥   p, 
   -   ⠪  , 뫪  ? (   ᯨ᮪
 p室  襩  p +ORC  ᥡ, 뢠 業  ⮢p
 -   p.   KPNC).     ⮫쪮    뫠 p,  
 pp  ⠫      ᫥    p   ᪠p p
 p  p ⥭ 쭮 .
    H  HH     H H   ,
 H  HHH  H     ! (   ᮢp襭
 p ᪠ - p. NC)
              ᯮ짮   BAR- {⠩:  BAR-}
   襩  룮!  H  p쥧    ᬮ  㬠,   
 BAR-,      ⠥ p ᫮,     ..
 p  +ORC          p, 室   (..
  )

 [13-  ]
 BAR-    13 p, 祭    #0-#12. p᪨ UNP
   ⮫쪮 12 p (#0-#11 ᮮ⢥⢥)
 #0 - 㪠뢠  p宦 p
 #1-#12 - ᮡ⢥ ᠭ p
 #13 - CRC (p쭠 㬬)
     CRC?      ᫥ , 쭮 p樮 
 pp ᯥ祭.
 1) 㬬p㥬    (.. #0+#2+#4+#6+#8+#10)    "A"
 2) 㬬p㥬      㬭  3 ((..#1+#3+#5+#7+#9+#11)*3)  
   "B"
 3) 㬬p㥬 "A"+"B"    "C"
 4)  "C"  10  _p ⮪_. ᫨   ,  塞  
 10.  (Hp p  ᮢp襭     祣 
 !!! - 8-( p. NC)
   ⥯p 쬨 ᪮쪮 ⮢p  bar-  ⥫쭮 p
   .   p ᮪   砥 訡 ⥭ p
  ᪠p  ᪨.
      ᫥-p,  ⠪  p 㦠  p
 ᪠p     pp襭   p⠫.
   Hp㤭  ,     p᪨ ﬨ  p 
    筠 .  p ⨯ p p.  
 .
     p  CODE A            CODE B (XOR C)    CODE C (NOT A)
      0:  0001101   (13)     0100111   (39)    1110010   (114)
      1:  0011001   (25)     0110011   (51)    1100110   (102)
      2:  0010011   (19)     0011011   (27)    1101100   (108)
      3:  0111101   (61)     0100001   (33)    1000010   (066)
      4:  0100011   (35)     0011101   (29)    1011100   (092)
      5:  0110001   (49)     0111001   (57)    1001110   (078)
      6:  0101111   (47)     0000101   (05)    1010000   (080)
      7:  0111011   (59)     0010001   (17)    1000100   (068)
      8:  0110111   (55)     0001001   (09)    1001000   (072)
      9:  0001011   (11)     0010111   (23)    1110100   (116)
      pp:       101
      p:        01010

     BAR- p ⮤ A  B, p ᥣ . 
  p  p ⠭ p  .

              #0         #1   #2   #3   #4   #5   #6
               0          A    A    A    A    A    A
               1          A    A    B    A    B    B
               2          A    A    B    B    A    B
               3          A    A    B    B    B    A
               4          A    B    A    A    B    B
               5          A    B    B    A    A    B
               6          A    B    B    B    A    A
               7          A    B    A    B    A    B
               8          A    B    A    B    B    A
               9          A    B    B    A    B    A
 -!    㯠⥫,      ,  p BAR-!
 H  p ⠪    ! :-)

 쬥 pp "p⨭-p":

 BARCODE:    8 0 00570 00425 7
  ⠫ ( ᯮ, 㤠   ᨨ !)  ,  8 0 0 = 嫮
 , 000570 p  ABABBA   004257  C
 ⭠ 㬬: 8+0+5+0+0+2 = 15
  0+0+7+0+4+5= 16 and 16 *3 = 48
  a 15+48=63
 63 === 3
 ⮣:
 10 - 3 = 7 = p쭠 㬬
  = 8 = ABABBA CCCCCC

 H     ⮣? - p .
 -    ᥣ ⮣,  ,    ⮣ (...   
 -       p   ᯨ᮪   童p   p㣠⥫,
 ⭮⥫쭮  ,    ⠥  ᥡ  "" 짮⥫  祬 
 p,  p   ⠭  ... p. NC),    
   稫  p    楫 (...  p㣠⥫⢠
 ⭮⥫쭮  ⢠    p   . +ORC p  -
 㡮    p /)8-O/  p  p娥...), ᭨ 業  
 㯠 p    !
 H  p⥭  pp,   BAR-,    
  p.  㤥 ᫮ ᤥ  VisualBasic-  DELPHI.

     !    ⭮    bar-    ⥫䮭 ⠬  
 p  p窠    ... ( p 㯭  
 ꥪ  ),      pp  ᯥ祭.       ,
 堪, ⮯祬  p稬.
      砫  bar-, ⮬   p, 䥪⨢, p⥫쭮 
 .        ⮨⢮   ⢥,    p쥧
 堪p.

 [HHH ]
 ()     ⮤ , ᭮  p p᪨
 pp,  ppp塞  筮    CD-᪠  (  ᨨ    ⮤
 p      襫-by   KPNC).         ꥪ    .
 H   쬠 ᮪ ⢠  pᮢ 業,   㯨
  "⮭" ᪮ ( p p    ᪮  㯨..)
 祢,          p⠢   ꥪ  
 p.    筮  ⠭       ,
 ⮬     "䨫p"  ⡮p 訪.     
     p p. p pp:   筮 ᫮  
 p⠢   ⥫㠫 맮. H ᫨  p쥧 p
   ᢮  襩  p,    p p ⠢  㤮⢨
 ,  祬  -  .   p 1  2   筮 㡮
 㯫   .   祬-   ,  
     ᯮ 㦤 p  , 뢮  pאַ  
 p.
 (...    ᫮ p  - ⢮ 騪  p.
   ⮣,    p    ᨨ    祭 ,     ⮩
 ᮢ  ᪠. NC)

 [  㯠]
 짮⥫,   騩  "⮬"  p,  饭  "
 㯮"   ᭠砫  HH H, p p p
 ⥬᪨ 権 㤥 pp ⮩   . 
 p   p-pp,   p  ᮮ頥 
 p,  騩 pp   ᪥.  ⮤  p
 ᯮ  ⠪     BBS  pp, p뢠  p 
    p㣮.  p⨬  ⮩ ⮩  p 3.1  3.2  DOS 
 8.1,  8.2    9.1    Windows,      p⮬ p. ᫨  
     ᥣ      p    p⠥,  
 㦭  p "堪" pp,   ⥫쭮    . 
 p讥  p. ᥬp    p p
 p, p  ᬮ ᯥ譮 p  쭥襬.
 "  " p p ppp ⨯ ,   㤥
 筮  p  p  p  ⢮ pp, p
 "  㯮". H   ! ᫥ 㡫樨  p
  Web-  ⨯  祢 ⮩  p .
    ,  ᫨    ⠥      p⠥   pp뢠饩
 ,  pᬮp    ""  ᢮ p㪮⢮. p諨 
     騥  p   p p {᫨  ⠬ ᫥
 ⮣  ⠢,  -  NC}.        -  p 饣
 p᪮ ⢠   㣠  ⮨ 業 饩
  祫⢠.
        㦥  ᪠   "" p   p 饭 ⨬
 "  㯮". 筮  ᠬ 㯨 " p p"   7  8
 CD-ROM     c⮬ Microsoft, Lotus, Norton, Symantec;    뫨
 饭  p    p쬮.  ⮨    ᡮp,  뫪 "p⨭
 p",        . {,  ᨨ "p뭪" ⮨ 㤠 襢 
 ᪠, - NC}
    H    㯠  "c"  ᡮp  CD-ROM!    p!
 㯠          p   ᫥ p 樠 p!
 㯠  "⮪"   " p p" '⮭' ᪮  p. {--,
     ᨨ ⠪! - NC} H  㯠 祣,   ⮫쪮
 멤     p  ⪨/  p墠  ...  ,  
 "砩",  "", "p", " N1" -  ⮫쪮 p  ,
 p  㦠᭮ ⢮   p ᢮ -p
 p:"  堪p  p  p稥,  襢   뢠
 p"  (pp᪠  䨣p    "p樨".    ᥡ  pp
 -  p㦨 魥 㭣-)
    "p"  p쭠      "  㯥" 祭 p᭠ 
 堪p᪮  窨  p,  筮 ᫮ 奬.    p
     䠧. 砫    "᪠騩" p樮 ,
   ᢥ稢  " p". (---  p 모  
 㦭 -- NC)
     p  p  뢠 p Norten Utilites 8.0
     pp樮   p  (pp,  1212-1212-12)    
 p        WinIce (s 30:0 lffffffff "your_string")
  ⥬ ⠢ BreackPoint-   뤠 ⫠稪 p. ( ,
     p㦨...   䥪⨢ ,  p  ,  
 ⮬   p   孮   ᥣ     p).  ᫥  
 "p樮 " 맮 WinIce
   :task                        ; how
   :heap IABROWSE               ; where & what
   :hwnd IABROWSE               ; get the Winhandle
   :bpx [winhandle] WM_GETTEXT  ; pinpoint code
   :bpx GetProcAddress          ; in case of funny routines
   :dex 0 ds:dx                 ;          let's see their name
   :gdt                         ; sniff the selectors
   :s 30:0 lffffffff "Your_input_string" ; search in 4 giga data
   :bpr [all memory ranges for your string that are above 80000000]
    ᥣ .


                          : 㬠 
                        ===============================

                    [UMS.EXE] [LIGHTSPD.EXE] [GENERAL.EXE]
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[H   H INT]
      p  INT    筨    p⥪p PC ⮬ 
   㧭/⠭  p  pp뢠,      ᢮ p
 砥,        ⥬    p   (   MS-DOS)   p祭
 p騢,   p墠뢠      .      INT  p
 몭 p   祭 :

       p稪  pp뢠  H  H   pp뢠  맢
       p INT p HHH  p, ..  
          MOV AX,21h/INT AX,  ⮫쪮 INT 21h

 ...   p 몮 ᮪ p 믮 pp뢠
 ᫥⥫쭮    PUSHF/CALL    FAR,   뢠饩  ⫨  ⥪饣
 p稪.    p㣨    ⮤    맮   p稪   pp뢠  
   ⠫    p   ⥪  ᫥騩 RETF {...  
 p} Hp 奬   p뢠 맮 pp뢠:

       ᪨p 
       饭  p稪 ""   䨪樥   
       p p稪 p ᢮ 

   ᮡ    砥    p    "᪮ 㯠" ,
 ⮬, 㤥 pᬮp  ᮮ⢥饬 p.

[  ]
          堭  p ,   p ,  
    ᥬp,   "設-몮"   .          
 p襣,    pp᭮   p   ;  p      
 筨   p襣   "tight   and   tricky"   ("⭮     ")
 ᥬp᪮  .    室   pᮢ  Web-:
 p,      堪p   ⠫᪨ p p  ⮬
   p饭,   祭 堭 ;    p
 p襣 "p᪮" ᥬp᪮ , p 뫮   :
 祬     㧭, ⥬  㤥  .   p稢 ᥡ 
 p  ⢥p,  "p믠"    ⮬ p㪮⢥.  筥 
 ⮣ ,   易 .

                                 -=  =-
 p  p樨 쭮 ⥫ ( p  p  p
 奬 ).   ᢮⢠, p묨  :
       DS:SI 㪠뢠  筨 
       ES:SI 㪠뢠  p 
       SI () DI pp pp(pp)

                           -= H  =-
  JZ  (Jmp if Zero)     : p室 ᫨ "p"     ⠭ 䫠 
  JNZ (Jmp if Not Zero) : p室 ᫨ " p"  p襭    䫠 
  JG  (Jmp if Greater)  : p室 ᫨ H     p ⥫쭮
  JA  (Jmp if Above)    : p室 ᫨ H  p ⥫쭮
  JL  (Jmp if Less)     : p室 ᫨ H     p p⥫쭮
  JB  (Jmp if Below)    : p室 ᫨ H  p p⥫쭮
  JC  (Jmp if Carry)    : p室 ᫨ ⠭  䫠 p (. JB)

[  HH ]
      C諥     p p   p 祬  ᯮ㥬
 p誨    p᪨ pp   p:     ᠬ
 ,   設⢮ p p ( BBS  pp).
         p  pp ᯮ   p, ᭮ 
   p  p㪮⢮  p樥. ⥫쭮,  
 祭  ⮩ ,   騥 p     p.
 H    ⮭  ⮬⥫쭮  ⨥  㦤   ,  -p
 ⮣-    奬   p㣨 "p" pp.
      筮    砫 pp  "NAG-Screen" - "p騩 p",
 p騩  ᫮,  p  p        ᠬ    
 p쭮  p㪮. - 宦  " ᫮, 室 
 16-   2- ⮬  78-p, 7-    4- ".  
  訡  ᮮ頥 p 㪢 p... p  ⮫쪮
  ⠫ 㪮.

 H p  pp:

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  UMS (Universal Military Simulator/p᪠  p)
  version 1 by Dr Ezra SIDRAN
  (c) 1987 Intergalactic Development
  European Union:     Rainbird Software
  United States:      Firebird Software

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
        -祭  p  EGA  {ᬥ,    -      p⠫!}
 pp,    p, p    .  祭 p᭠
 p 奬  ("!".  80% ᯮ㥬 ᥣ 
 (ﭢp 1996) p諨 p⢥   12 p⨢).
      砫      "NAG"-p     p  ⢥ 짮⥫, 
 ⮫쪮  CTRL-C  pp뢠   p頥   DOS - ⫨⥫ p
 p  奬  :     ᥣ  p ⪨   ⮫쪮
       믫뢠    OS, ᫨  p⥫.  UMS p ⮣  
  ᮢp襭⢮ - "p 㪢" .
        뢠 p楤p p쭮  p ᥣ p㦨, 
 뢠      ᨬ  {p᪨ p}. ⮬,  
 p   ,  p  pp pᯮ  , { ᥣ
 PSP     } 뢠   ,  p ᫥
  p᪮ p.
      쭮   p,      ⮬ 砥  UMS   㢨 p稩 
   pp...      㣮... 筮  
   ᮪p  ᯮ p pp뢠.
      pp p pp뢠  p㦨 ᫥騥:

   00,02,22 : 㪠뢠 㤠  
   34-3D    : 㪠뢠   xxxx:0000
   3E       : 㪠뢠   xxxx:00CA

      !   ⥫쭮 稬 ⮬ p⥫ 3Eh p. 
   p  ᫮,  p騥    "NAG"-p,   p㥬 
 ,     諨 ( UMS   室  p, 㪠뢠
 p   3Eh  +  7656h)    %!  {...}.    㢨  ᮤp
 "NAG-Screen-"       p "in extenso", ..  p, 
 p蠭,  ᫮  祬    饭...  (,  ⢨⥫쭮, 祭
 p  ).  p      pp  p    p p,
 pp,    'PASS'      㤥  p... ,   ᪠, 祭
 p  , ⥬  , ᯮ짮 p pp뢠  p
     p...      " ᮢp"
 pp.
      p    㣫㡨    稬 "p騩" 堭,  
 ⨬ ,   p .
      "p" pp (   p楤p  BSS  pp,
    )   p ᫠ 権.  祢
 (      p㣨,    ⨣    堪)    H
 p  p᪨  p   p. ⮬,   p p
 p,    p  㦭  ""    p쭮 p  ,
 ᯮ㥬    p,  ,    pp⭮,  堭
 p, ⮡ 뫮    p p.
      堭  p     p㦥 ⠭  BreakPoint- 
   ,   墠뢠  p 樨,  ᠭ p. ( 
   ᯮ  ᪠  p {??? 8=|} p):

   ES:0F8E       (    p, 㬠 pp)
   ES:0F5C       (    p,  p)
   INT_3E + 7656 (     p "in extenso")

 p  p㦥 奬 :

      MOV       CX,FFFF        ; ⠢  c稪 () -   
      REPNZ     SCASB          ; ᪠p㥬 ES:DI (p᪨ ᢮p)
      NOT       CX             ; ᫮ ᨬ  p᪮ ᢮p
      MOV       DI,SI          ; ᬥ饭  p쭮  p    DI
      LDS       SI,[BP+0A]     ; ᬥ饭  p᪮  p    SI
      REPZ      CMPSB          ; cp DS:SI  ES:DI (p᪨
                               ;  p p),⮣ p
                               ;   X=0     p
                               ; p⨢襣 p.

      ,   諨 p騩 堭...   ⥯p 
 ?        p襭,     ⠢  ᭮
 p...    ᫥  ,  ᫥騩  CMPSB      p饣
 堭...        ᫥    (   뢠  設⢥
 p⨢).  :  ᫥  MPSB    室   p p騬
 ᨬ    p᪮ p.   p蠥 ᫥騬 p:

  MOV   AL,[SI-01]    ; p   ᮢ騩 ᨬ  p(
                      ;  p )
  SUB   AL,ES:[DI-01] ; ⠥ ᮢ騩 ᨬ p쭮 p(
                      ;  p )
  CBW                 ; ᫨ OK,  ⠭ 䫠 Zero

      p,  㨬 ᫥騩 JZ Near ( "74"):

  CS:IP 740D  JZ  p⮬_㤮⢮p

      ,      p...      p㣠   pp  (
 ᯮ  pp  DI)...   ! {...p  ,
  p  ᫮}

  CS:IP 7590  JNZ p⮬_㤮⢮p

        ⠪ 奬 祭 p:  p p  75 
 74    74    75, .. JZ  JNZ   JNZ   JZ... ⥯p  㤥 ᥣ
 p室, ᨬ  ⮣   ᠫ, ᫨   㣠 p!
      p  p  :

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 CRACKING UMS.EXE (by +ORC, January 1996)

 ren ums.exe ums.ded
 symdeb ums.ded
 -    s (cs+0000):0 Lffff 74 0D 1E B8 C2 3F
 (祣)
 -    s (cs+1000):0 Lffff 74 0D 1E B8 C2 3F
 (祣)
 -    s (cs+2000):0 lffff 74 0D 1E B8 C2 3F
 xxxx:yyyy                                  ;  ⢥ ⫠稪
 -    e xxxx:yyyy    75
 -    e xxxx:yyyy+17 74
 -    w
 -    q
 ren ums.ded ums.exe

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
       , ...  㢨   [Soft-Ice]    p 
 ⠬,   ⠪   p,  騩 [Soft-Ice].
      ⨬,     pp 431A0h , ⮬  BX=4 ᥪp
 {??? 8=(      sector ⠪ pp 1000h    p 
 p?   㢠 +ORC,    ᠫ      p,  p
 樠樨    MS-DOS  pp  p  ᮫⭮  p㣨 祭} 
 CX=31A0h  p  樠樨  pp,     ᭮⥫쭮 
 pp    ᥪp  (  ᫨    ,   pp p 
 ᥪp  CS+2000h)  -   㤥 p襩 p⨪! ᫨   諨 ᪮
 p   p ᥪp,    ᪠  p  ᥪp, 
  pp   H p騩 奬.
          ⥯p  p      ⠫      ᮢp
 p ⠬.


 [LIGHTSPEED, from Microprose (   p 461.01)]
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
        pp,  饭   1990 , p  "ᮢp"
 p  p饩  奬.       p   p楤p
 㯠  㤠 pp (    p p).
       筥    筮    祭 p  "snap"- .
 p  00,  08,  1B,  22,  23  -  祣  ᮡ.  p "᭨"
 ᭮      -᫥  ⮣,    p-   
 ᥬ  p    祥  ,    筮  p  p  
 祭.  ⥯p?
     ,  'Martini - Wodka' ( p ⮫쪮 '᪮') 
 p.  H筥  ᭠砫: "᭨"  (  p).  ⢥
 p      "ABCD".   ᯥ⠩   p  p.  , 
   'Martini  -  Wodka'  p᫠.    ,  ASCII  'A'
 p  41h, 'B' - 42h, 'C' - 43h  ⠪ ... , p "᭨", p
   ᤥ   ᫥  p  ᮤp ⮫쪮 ᪮쪮 ⫨稩
  ⨬ 祭ﬨ.   .
        ᪮p  p㦨,     LIGHTSPEED ᮫ 樨 ( 
 p)  404307,  ..  ᮮ⢥⢥  30BE:F857   4043:0007 ( 
 p)  ᨬ,  . - 宦 :

  F855 F856 F857                   F858                F859...
  41   3E   p_⮢_㪢   _p_㪢   _p_㪢...

      稢  ᪮쪮  pᯥ⮪,    p㦨,   ᮫⭠ 
 30C64  ᮮ⢥⢥ 30BE:F83E ᮤp H   ᨬ.

      CS:0097  MOV AX,[BP-08]   SS:F83E = 00+_ᨬ

      p  BreakPoint      樨    ᬮp  㤠   p.
 Hpp  ᫥  p:  CS:009A    MOV  [BX],  AX 砥,  
 ᨢ,  p  ⮫쪮  , 㤥 ⥯p ᪮p  BX=F85A. 
       ᤥ?  p ᯮ짮  樨. ﭨ 
 p  'CMP AX,000Dh', p 砥 " 짮⥫  ENTER
 ",  ᪮  '0Dh'    -   Enter.    -
 .! 筮 ᪮p  p 'CS:0073  3D0D00  CMP AX,00D'
 p     p. H  H   ! {⢨⥫쭮,
 p ⮤ 㦠᭮ 뢮   ᥡ ⪮ ᪫ 
 譥  p,  ⮭  㫠pp pᯥ⠪... 室 p
 ,        _묨_ p  ᮡ p殮}.
  p ,   㦥 p,   襩  襩 ⥯,
 ᯮ  ᫥騩  뢠  p:  襬  pp
 (ᯮ   p   ,     㧭 pᯮ즥 pp) 
 ᫥⥫쭮 'F3 A6',  p⠢ p REPZ CMPSB.
        ⮬ 砥  稬  p  ᪮  pﬨ (pgsp =
 PSP pp):

       pgsg:C6F9
       pgsg:E5CA
       pgsg:E63E
       pgsg:EAB0

     !  쪮 p...  ᬮp   :  㢨 
 p p ('E5CAh') -   .  p騩 堭  pp
 1990              1987    UMS ( p  
 堭 ᯮ   ᥩ  /1996/)!

  B9FFFF    MOV       CX,FFFF   ; 뢠     CX
  F2AE      REPNZ     SCASB     ;  ᪠p㥬 ES:DI  (p p)
  F7D1      NOT       CX        ; ⢮  ᨬ  p쭮 p
  2BF9      SUB       DI,CX     ; 塞 DI  p
  F3A6      REPZ      CMPSB     ; p DS:SI    ES:DI (p 
                                ; p᪨ p) pw with user pw)  CX=0
                                ;  p ᮢ饣 ᨬ

           p?       ᯮ    p  p,
  㡫!  ⮩ ᥪ樨 p 쪠 p楤p p
 p᪮   p    p  pp,  ᪮  p  ᥣ
 p.
      p    p⭮    p   p  ⠭
 pp  p   祭  堭...   p⠥, ᪮
   㤥    'fixed'  BreakPoint,  ⮬    襭 뢠 
 p㣮  㬥p樥  ᥣ:ᬥ饭,     諨 (p p DOS) {,
 㦥  ⠪  p㤭    㤠  ⮢    CCh /Int 3/,  ⮬
 ⠭    ,  -  ᥣ ⠪ , p⠥   100%}
 ⮬,    ᭠砫  H  ⠢ Memory_Read/Write BreakPoint  
 襭   ⥬  ... p   p㦨 ᥣ:ᬥ饭,
 ᯮ㥬  p楤p p  ⮫쪮 ⥯p   ⠢ Fixed
 BreakPoint {Fixed -   execute?..} (pp  NOT CX p).
      p   BreakPoint- pp. p ES:DI  㢨
 p  p.  p-  !    ⥯p  p p
 'as_extenso'    .  "".
        p稬,  楫 誮 堪, ᭮  宦
   ᯮ짮  ⮣  "".    p⠥  p묨  ﬨ... ,
 宦  p    p᭮:   p ᠭ?  From which
 locations  do  they  come  from? ⠬ 筮 p⨪ p뢠  
 p  䠩,  {'far away' ???},   p pp뢠  
 p  ᠬp饣 .  pp 1990 ,  ⫨砥
    ⭮⥫쭮  UMS:  p    p  p p,   ᫨誮
 㯮:    ⨫      p   㢨 . 
 p p ( 祭 p⨢ ᯮᮡ): ᬮp  : (c
 BreakPoint-      ):    p   ᥪ 宦 
 p :

  sg:0118   8C 91 9D 95 9B 8D 00 B8 EC 94 9B 8D 8F 8B 9B
  sg:0128   94 9B 8D 00 AE EC 9C 9B 8A 9B 86 00 A9 EC 91

   ⨯筠 p p  p⥫ '0'  p묨
 pﬨ.
      !  ᫨      ,    p    !    
 ᪮   p!    NEG  p!      pאַ  ᮮ⢥⢨:
 91=6F="o"; 92=6E="n"; 93=6D="m"  ⠪ ... {  -   
 p᪠稢訩 室 ᫥... , NEG- 砩,-  뫮 pp
  ,- 筮  "㠫쭮"   pp , ᫨ ⮫쪮 
    p⮣p    㩬 p.   ᥬ,   筮  ,
 +ORC  p      pp pp...  祬   ⮬
 '⠪筮' 㬮砫?..}
        ⥯p   p p  p  뢠...
      p饩   p楤p   ᫥    REPZ CMPSB p
 JZ jmp_OK   JMP jmp_OK p...

      F3A6      REPZ      CMPSB        ; p DS:DI  ES:SI
      7405      JZ   p塞_AX=0000 ;  p JZ
      1BC0      SBB  AX,AX
      ADFFFF    SBB  AX,FFFF
      :p塞_AX=0000
      8BF3      MOV  SI,BX
      8BFA      MOV  DI,DX
      5D        POP  BP
      CB        RETF
      ....
      83C404    ADD  SP,+04
      0BC0      OR   AX,AX
      7509      JNZ  0276               ;   !

      p,  ᯮ    UMS,  ,  p⭮,      JZ
 p   JNZ  p  (⠩  ᤥ        H
 [Soft-Ice]      p⠥),  '74'    '75'  ⠪  . ⥬  筮
 ⠥  JNZ p  JZ... ,  ᢮
   ...    H  p⠥!   (     ᫥饣 JNZ 
 ).     ᥣ ᢥ  SMC (p饬 )
 :        pp뢠  pp    ,    p
 室.      p      "p⢮"
 pp.
         p⨫ 쪮 "襭" p⨢ : p
 p樨   ᯮ    "p"    樨  p㣨  ﬨ
 pp...  ᫨      p  JNZ,     p
 ᮮ饭  {???}    pp  㢥p  믫!     p
    p   JNZ,   ᪮     ᫥    RETF  㤥
 ᣥpp " ".⮬    pp뢠騩 堭...
   -    p  p ⨪...    
 p  ...  ⠪  p    㤥 p   ...
 祭 ᠤ.
      ...  ,    'Martini-Wodka'  㬠: p! 쪮 
   p室  ᫥  JZ: ⠭ 䫠 *FALSE*  pp AX (AX=1, 
 ᤥ   SBB p樨).  ᫨ p 室  㫥 䫠...
     p.
        ,  NOP  5 ⮢  SBB p権.   
 襬  ᫥⥫쭮  INC AX, DEC AX, NOP, INC AX, DEC AX  
 SBB.     p襥  ᭮  ᯮ짮 p p p権
   "墮"  NOP-:  ᮢp  奬    "" 稭
 NOP      p  ⥡,  ᫨   p ᫥⥫ NOP-.
       ,ᥣ   㦭   롨p   H  H    
 "HH" p襭.
      모    SBB   !   p ᪠ ᫥騩
 JNZ...  pp  㤥  p  ᫨     㣮, -- ᫨ 
  p p. (  p襣  -. UMS- 
 짮⥫  ⥯p      p...        
 pp  pﭭ ''...  pp᭮,  ⠪ ?)
      p  LIGHTSPD:

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  CRACKING LIGHTSPEED.EXE (by +ORC, January 1996)

  ren lightspd.exe lightspd.ded
  symdeb lightspd.ded
  -    s (cs+0000):0 Lffff 2B F9 F3 A6 74
  xxxx:yyyy                               ;  ⢥ ⫠稪
  -    s (cs+1000):0 Lffff 2B F9 F3 A6 74 ; 祭:p ⠪  㢥p
  -    s (cs+2000):0 lffff 2B F9 F3 A6 74 ; 祭:p ⠪  㢥p
  -    e xxxx:yyyy+6  40 [SPACE] 48 [SP] 90 [SP] 40 [SP] 48
  -    w
  -    q
  ren lightspd.ded lightspd.exe

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 [GENERAL.EXE] { ⠭ p,   ⠬ 祭 㬠}
 """""""""""""
          CMPSB  祭  ⨯.      ,  p  pp
 ᯮ  p  ,  ᫥ ⫨砥     F3A6
 REPZ  CMPSB  p.  ,  pp,  pp㥬  奬 ,
 ᯮ짮    p  pᨨ  'Perfect  general I from QQP-White wolf',
 (July 1992).
          pp   "NAG" p,   p p楤p
 BIOS.    p  p㦨  (   !),  general.exe
 pᯮ            :  ⠢  BreakPoint/Write  
 p㦨,   p xxxx:1180 to xxxx:11C0 p⥫쭮 ᬠ娢 
 堭  ,    xxxx - ᫥騩  PSP ᥣ. p ᫥騥
 樨 (⨯筠 pp᪠ p楤p):

       Breakoint   ,  "  "
         p訢 p᪮ p
       Breakpoint TRACE    "p-"
       C ᪠

   㦥  !  p   p 襩 樨:  9 ᫥
 TRACE  (  p権!)  믮    맮 p楤p 'sniffing' 襩
  .

  -9   xxxx:0185 7425           JZ   㤠_㣮,  ᯮ
  -8   xxxx:0187 2D1103         SUB  AX,0311
  -7   xxxx:018A 7430           JZ   㤠_㣮,  ᯮ
  -6   xxxx:018C 2DFD04         SUB  AX,04FD
  -5   xxxx:018F 7443           JZ   ᯮ
  -4   xxxx:01D4 E85500         CALL funny_procedure
  -3   xxxx:022C 803E8F8C11     CMP  BYTE PTR[8C8F],11
  -2   xxxx:0231 750E           JNZ  㤠_㣮,  ᯮ
  -1   xxxx:0233 9A0A0AC33E     CALL procedure_that_sniffs_our_memory_area

 p,  맮  p楤p  'funny_procedure'  c    p ,
  <*  -  p  *>,   
 ﭥ    :

  :funny_procedure
  803E8F8C11     CMP  BYTE PTR[8C8F],11
  750E           JNZ  p_
  9A0A0AC333     CALL procedure_that_sniffs
  0AC0           OR   AL,AL
  7405           JZ   p_
  C6068F8C2A     MOV  BYTE PTR [8C8F],2A
  :p_
  803E8F8C2A     CMP  BYTE PTR [8C8F],2A
  7504           JNZ  after_ret
  B001           MOV  AL,01
  C3             RET

   ᬮ     :=). p⥫쭠 ᮮp  p権
 MOV  2A  and CMP 2A, ᪮  ᫠  p '2Ah'  ᫥饬 JNZ
 after_ret, ᫨  뢠 '2Ah' p㥩 MOV p樥...   p
 p室  JNZ    믮    '2Ah'.  '2Ah' 宦  '*' ᨬ,
 筮  ᯮ㥬  pp⠬,      ""!     p⠥
 ᫥騬 p:

       p ⨭_location c 11h
       ᫨  ,  p室  p  '*'
        뢠 'sniffing'
       OR AL,AL (pp  )
       ᫨ Zero - p室  p  '*'
       ᫨ AL=0,   ⨭_location '*'
       cp ⨭_location c '*'
       JNZ 襫_䨣__p
       RET

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 CRACKING GENERAL.EXE (by +ORC, January 1996)

 ren general.exe general.ded
 symdeb general.ded
 -    s (cs+0000):0 Lffff 8C 11 75 0E
 xxxx:yyyy                            ;  ⢥ ⫠稪
 -    e xxxx:yyyy+2  EB [SPACE] 09
 -    w
 -    q
 ren general.ded general.exe

 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   p   JNZ  CMP '*'  JMP to MOV '*' p. H 
 "NAG"-p㭠,   ... ⥦, ᯮ, 㤭.


                          : 㬠 
                        ===============================

                  [TOP.EXE] [F19.EXE] [POPULOUS.EXE] [MAP.EXE]
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         﫨    p襣  p  ᯮ짮  p쭮  
  ᨬ    p⮢  ᯮ   믥p (p뢠 ⮤)
  ᯮ   , p㬥 ᯮ짮 p楤p p 
  ⥬,        p  p.  ⮬        롮p
  ⥩  砫 :

          p᪨ p  
          ""   p쭮 p
          p楤p p 
          p ᢮p  p-p 
          jmp_to p訩_稪_樭_짮⥫
          jmp_to ___pp_p

  H  祬    ?

          p   /p/p뢠  p  pp
           (䨣  ZEN-⮤ )
            p楤p  p  p筮  訬   ⢮
          ""    p,  ᫮ p室, p  ..
             p㤭    p⬠    p,    ⮫쪮 
           p쥧 堪p   .
                -p᪨   p,  ⨯  INT  3  {
           p訪   INT 01}, p᪮  饭    p.
              {p  p     int  01   뢠  
           ,  ..  Soft-Ice   ⭮ 祬  , - 
              ﭭ p  - p㣮}
          ᯮ짮  p " ᨬ", " p"  롮p
            p.    . .

 [   ]
   p   㦨    ⢥p,    pp  ᯮ  
  짮⥫.  ⨯ p  , pp,   襣 㯠
     ,   ⮬᪨   p  ⮬⠬,  ᯮ㥬    
  ppﬨ.        p  p hardwiring: ⭠
  奬      (⮬᪮   p  ⮬)      ⢥
  業p쭮  p  (뢠  pp  ⮫쪮 p 
  ᪨  襩 ⨪ p).    ATM  "宧鶴" 筮
      ⨧  -    p  p  筮   p㥬.
  (Hp      p  p  p,         
  맮 p㤭⥩. ⠪,      p ᫥騥 蠣:

         p      "宧鶴"
         p     ATM  "宧鶴"
         蠥 p ᠣ   -  訢  p -
         㫨p㥬  _쭮_ p⮩,  ⮬ ᫥   訡
         ⥯p ᮢ뢠    p  p뢠 ᫥騥 蠣

              뫠 "宧鶴" ᨣ, ⨯ "!   -
              p  㫨. -   ⠪    ⮢p
              ⮣ ?"
               p墠뢠  ᨣ, p   諥 "ATM
               ᯮ"
             p ⠪ ᨣ, "宧鶴" ⮫ ᫥饥 "p, 
                ,  쭨"
             ᢮    p墠뢠  ᨣ, p㥬 
               諥 "!     ⢨⥫쭮  !    p
              ⮫쪮 ,  ᪮쪮 墠  ᮢ   p-
              "
               p ⠩᪮ 楡 믮  p

     筮 p,  ⮫쪮 p   ⭮襭  饬
  堪p,     p⠥  ᯥ樠쭮 ⢥p᪮ ⮩. H ᫨
      ⠪  p᭮ - p㦨  ⥫䮭묨 堪p (phackers) 
    ⮬  ...    ,   뢠 ⮫쪮 
  ⮬,  p   p쭠 p. ;=)

 [  ]
       ⨯  p    ᯮ    shareware pp.  
  ppp  ShareWare pp  뫠 p   襣
  p㪠  祭    p.  ⮤,  ᯮ㥬
      p᪨   p         ᯮ짮      
  Windows-pp, p     祭 "㭨쭮 " 
  p  "ᯥ樠쭮  ".    ᥪ樨 " Windows"   
  p뢠 ⠪ .

 [    H]
        ⨯  p    ᯮ   p  p㣨 p⥫
  pp.      p   筮    p訢   ᫥
  p   pp       p㧪.  Hp⨢,  p    ᫥
  p宦            ᪮쪨   p,      p  ⪥
  /p   p.  p       p   p
  "EOB I"  "Ultima".

 [DONGLE {HASP} ]
      H p譮    ᯥᨢ   p   ᯮ  Hasp  (⠪  
  뢠  p  箬).  Hasp -  쪮 p⭮ p⢮,
  ᮤp騥 p  p 㬬,  ᮥ塞  p쭮 
  ᫥⥫쭮  p.  Hp ᯥ樠쭮 pp Hasp- 
        祭     pp.     Hasp          ,
  p 㩬 ᨫ  , p  ⫠,   ⮬⥫쭮
    .    饭  Hasp-  "MULTITERM"-  (Luxembourger)  
        .      p襣    p  ᯥ樠쭮
  筮 訪p , p    pᬮp .
      筮    p       易  "⠬ᮢ묨"
  窠    p,    p ᪮ ZEN-㬠, 㩬 p 
    .  ᫨      㧭   p樨  p
  窠... {p, ORC+  뫠  ᥬp ⨭}
      ᭮  p樯,  騥    ᭮  ⢥p p ᫥騥:
    訥  p  p,    祬    p ⥬ 襩 㤥
  . p  
        p
         p pp뢠
         譥 䠩
         SMC (Self modifying code)
         祭 pᬫp 騩 ⮤ , p塞  묨
  ppp.
        ⠥ p
        㬬p㥬  ᨬ    ()
        p㥬 ᨬ  xor 255 {, 祬 __  255?}
        뢠  (1 )
        뢠 p (256 ᨬ)
        뢠 p 㬬 (   p⥩ 権)
        pp㥬  䠩  password.dat  c  p. <*..  ᭮ ..*>
   p    ppp,  騩     pp  p
  䠩,    ᠭ p, ⥬ 뢠 , p  p 㬬.
   ᯮ p p楤p  pp -  p...
                ...  {,  ORC+ ⠪ 祣 p
  ⮬ p ⠬ ⠪   ᪠.   祬  ᫮  祪 
  p?
         p饭  窥   ᠬ p (p   ;)
           饭 pp  p ⮩  p⭮

         㭪   p뢠 ᪨   p (p
           Hasp ᯮ RSA,    㢥p)

         祭    祭    ᯮ      p쭮
          p  ⠪  p쭮 JNZ, , pp,   樥
           ᫥ (ᠬ p⨢,  譥     룫拉
           ⮩,   㢥p  ⮬   㤥,   
          ppp  뤠 pp  /!/ ᫨ 
            ᥣ 窠  㣠p᪨/᪨  p,
           ⮫쪮   p 㩤 䨣⥫쭠 㩬 p,  
           㢥p  p  㤥,  .. pp 
          뤠 ""   p, , ᪠, p  ...)  -
           祭  窨  ᯮ  pp /
          . ⮬ 砥 p  ⢥ -  p 
          宥 ᠭ)
  p祬,             㣠,   ...      p  ⨥
  祪  p蠥 " ",     ᪮p    ( 
               "⠬ᮢ"    
        p  p  㤠). , ᫨  p
  窨 ᯮ   ᪮쪮 p楤p ( ⠪ 筮  뢠), 
    p  ᪠  CALL  xxxx:yyyy  (CALL xxxx)   窨 맮 
    )}

 [    BIOS-SETUP]
        p   p Setup  ⠭ p. 
      p㧨  䫮 {???  筥 p㧨  -
   䫮  p     p祬}   p Setup.  ⮬
  砥    p ⮫쪮  pp 堪p᪨ p :

       p PC
         p p   'Pw'
        
        PC
        Setup 㤥p F1  Del (  BIOS).  
        p  㤥.
       p㡨  Setup- p
       몫 PC
        p  
       p PC
       ᫨  ᤥ   ᢮ p /᫨  㦮 ;/
  {
    H    㬮. -p  AWARD  p-p:
    AWARD_SW  ( p孥 pp!),  AMI   ⮢p  ⥭, 
     FIDO p᪨ p p ᪠뢠   .
    ⮬,   ,  p p   "pp廊  CMOS"
     㤥 ⭮ p, 祬 p .
  }
    ᫨        㧭    p 㯠, p ⠡ FAT,
    Web-   (祭 p ᠭ)  p, 뢠
  "Monkey", ᪮  p  ⠪ ᯮᮡ p⥫⢠.  
    祭 p 祭 p.
        p 祭 p ᠭ ( ⮬ ⭮ ᥬp)
        p p   ⫨    奬
        ᯮ짮 ᮢp   ᠬp饣 
      祭   p,   类 祭 ᫮! 設⢮  
  쭮  p   p﫭:  䨭 pp "㬠" , 
  쬥  pp,  饭   ⠪  (1994 ),   ᬥ⢮p
  ⮩ -  (Tiger on the prowl), p HPS.   p⮩:
        MAP (p )  室 㦭 p (p ᯥp)
         p p  ""
        襬 ""  뤠 MAP p
        p㥬,   樨 -40 室 "" p쭮 p
        BreakPoint  Read/Write  "AAAA"  p⭠ pp:
  !  믮!    !

  8A841C12  MOV  AL,[SI+121C]    ;  AL p ᨬ p᪮ p
  3A840812  CMP  AL,[SI+1208]    ; p  "宬"
  7402      JZ   _          ; go_ahead_nice_buyer
  EB13      JMP  __p㣭 ; beggar_off_ugly_cracker

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CRACKING TOP.EXE (by +ORC, January 1996)

  ren top.exe top.ded
  symdeb top.ded
   - s (cs+0000):0 Lffff 8A 84 1C 12 3A 84
   xxxx:yyyy                                ; ⢥ ⫠稪
   - e xxxx:yyyy+2  08                      ;  1h
   - w
   - q
   ren top.ded top.exe

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     MOV AL,[SI+121C]  MOV AL,[SI+1208], ⥯p 뢠 ""
       p... 㤨⥫쭮,  -- ᮢ  ᠬ
  ᠡ...   p室!

 ["H  H"]
      p   "㪢 p", ⨯ p쭮  pp. 
  pp,  쬥  ,  ᯮ㥬  p誮  1990   - "F-19", 
    p    p  ᨫ  p.     
  ᯮ   楫  ᯮ짮 設,  ᠭ p:
    㦥   p   ⨯ p.
         ⮣ ⨯ p   㧭 p .  饭
  pp Start.exe ᯥp ⠭ ᥡ   xxxx:000  6C62
  ,    p  p饭  ⮣  ( ᯮ짮 SMC Self
  modifying code)  p ⪨ .    ? p⭮ 
  p    ᪮쪨 . H ᠬ   ,  , p⭮,
  p騩    㤥 室 p-  ᭮ pp
  .     p       p   p㦨,     p楤p  p
  (p⭮),    p  㤥  p,  ⠢  p  p  
  樨  43CD:DADA  (⭮,   ᥣ  ᫮).  p 
   ᫥饬  pp 堭:

  E87FAF    CALL random_seed   ;  ᫥ pp 砩 ᥫ
  83C402    ADD  SP,02
  8946E8    MOV  [BP-18],AX    ;  㤥 ᪮ 祩

        p      㤥    p筮 ᫮ (0-14)  ⮩
  樨,  ᮮ⢥騩  p  p.  p楤p  CALL  random_seed
  p  砩  祭  祭  AX...   祬  ᥩ 㦤,
  ⠪  㫨 : p ᥣ 㤥   p "p 0"
    㤥 p ⢥⮬.
      ⬥⨬  ⭮  ᥣ  ⮣:      p  訢  
  設    (..  p楤p p⪨ p饭 )  ⠪   
  롮p  p...  pp  砩  ᥫ  롨p   
  p...  祩  ᥣ 㤥 "p"  .
  H,  p쪮   pp:

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "F19" [START.EXE] (by +ORC, January 1996)
  ren start.exe start.ded          ;  pp 
  symdeb start.ded                 ;  ⫠ 
  - s cs:O lffff 83 C4 02 89 46 E8 ; 饬-  ADD SP,02
  xxxx:yyyy                        ; ⢥ p
  - e xxxx:yyyy 58 31 C0           ; 塞
  - w                              ; 뢠 p
  - q                              ;  ᥩ  室
  ren start.ded start.exe
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   p    p
      83C402    ADD  SP,+02
   ᫥:
      58        POP  AX        ; p ADD SP,+02
      31C0      XOR  AX,AX     ; 塞 AX
    ⮦,  pp᭮!      p  祬  㬠,  ⠪ ? p
  쬥    pp ,    ""  . (砫  뫠
  p    -  "騪      p p,  -  -  
  !".   ⮬      ⥯p        p  pp,  
  ᯮ짮  奬.

  [POPULOUS.EXE]
      p  pp 奬  "p p  p"   
    [Populous.exe], from Bullfrog.  祭 ppp pp  ,
  筮,  ᬮ          襣 ᫥饣 p. pp
  p訢  䨪 ⠫ "",  p p筮 :
    襭   ᠭ p  p㤭. H , (-)
    ""  p쭮  p.    ⮬  p        ᯮᮡ
  ᠬ⥫쭮     室   p᪨ p. ⠭
  BreakPoint  Read&Write     ᪮p    ᫥饩 ᥪ樨
  :

       F7AE4EFF   IMUL WORD PTR [BP+FF4E]     ; 㬭  "᪮_N"
       40         INC  AX
       3B460C     CMP  AX, [BP+0C]
       7509       JNZ  beggar_off_ugly_copier
       8B460C     MOV  AX, [BP+0C]
       A3822A     MOV  [2A82], AX
       E930FE     JMP  nice_buyer
       817E0C7017 CMP  WORD PTR[BP+0C],1770   ;  

     㬠,   p 襥...    p  
  ?  H  p    MOV  [BP+0C],AX  p NOP ( ⮣ 6 )
  ᫥  p樨  IMUL?  {     -    }  
          p         JMP   Nice_buyer      JNZ
  beggar_off_ugly_copier?   H  ⥫쭮      NOP:  ,
  ᮢp    ""  NOP-᪮  稭.  !   
   ⥬:

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CRACKING [Populous.exe] (by +ORC, January 1996)
  ren populous.exe populous.ded   ;  pp 
  symdeb populous.ded             ;  , p 
  - s cs:O lffff F7 AE 4E FF      ; IMUL WORD PTR [BP+FF4E]
  xxxx:yyyy                       ; ⢥ p
  - e xxxx:yyyy+4  EB [SPACE] 03  ; -  ⪠:  EB 04
  - w                             ; p塞
  - q                             ; 室
  ren populous.ded populous.exe   ; {  ,   }

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    p,  ⠪-?
  {
             -        -    ᢮  pﬨ.  ORC+  ⠪ 
    ᭨  .      p, p  p-  ?
  祭  p.    - p -- pp ᫮, ⥬
  p⢮  -  㭪樨  pp뢠  (  㠥 f(x):
  =X*[BP+FF4E]+1),        ⥬   p   ⢥   p.    p
  p      pp   㯥   one-way function. "㡮" 
  ᥩ ⮩ 祯:⪠  p   p p  䠩.
  ,        ᫮    p  p㭤 - 
  "p"     "pp"  pp樮  ᥩ.
  }
  p    㦥    ⮢    ⨬  pᮬ.    ᫥
  p, ⨫ ,  祭 p, 祭 p, ( Clockwork
  software  are  Codemasters),  祭      襩  p  (  
  ᯮ        TSR),      p 祭 p 
  .
      H,  ,   뢠 <* - p  ⭮ p 
  室  p  p 祡 *>, ⮬ ᤥ ᫥饥:
  ᬮp    ⮪    襣  , p Martini-, (ᯥp 
    줠, 1/3 宣 p⨭ "Martini & Rossi", 1/3 ᪮᪮ , 1/3
  ᪣   ⮭   Schweppes)      ᪠   p   p  "ᨡ,  +ORC"
  {--  --c-c-c-c----------  ...  室  pp 
  p⨭ ;=}

 [MAP.EXE]
        ⥯p  p    襩 p     -
  MAP (p 2). ᯮ짮 ⮣ p㬥 뫮 p  p쥬
  p,      Map.exe    "p騩"  p    p  p
  p,  ᫥   p   砩   { 
    ᪠,   㤭 "Time Delay"  "뫥稫"   ᢮ p
  p    p    -  ᪮p  ⠩p  (  ᫥騥
  pp樥 ⮢ p쭮 p)}
      ᯮ짮   筮  㪢    ⢥  p,  襩  
  p   XOR  SHR  㠫묨   pᯮ
    "᭠"  ,    孪       p, - p
  맮  ⫠稪    "ᬮp  p". p INT_16 뢠 ᫥
  p㧪  "Nag-Screen-"a.  p  㬥 LODSB, p p楤p
  뢮饩 "press..."   - ᫥騥  ᫥ p楤p p.
       B95000         MOV  CX,0050
       2EFF366601     PUSH CS:[0166]
       07             POP  ES
       AC             LODSB
                      ....
    㦥    "稪"  p  p      ⠫쭮.    
  뢠  㡦.    p  p  pp  ⮣ 맮.
  騩  p⠢ p 맮 p楤p:
    91             XCHG AX,CX
    6792           XCHG AX,DX
    28939193       SUB  [BP+DI+9391],DL
    2394AA94       AND  DX,[SI+94AA]
    2EC7064B880100 MOV  WORD PTR CS:[884B],0001
    2E803E5C0106   CMP  BYTE PTR CS:[015C],06
    7416           JZ   ret               ; a! p᪠ PUSHa & POPa!
    505351525756   PUSH the lot
    E882F3         CALL 8870
    2E3B064B88     CMP  AX,CS:[884B]
    7307           JAE  after RET         ; !  p ret!
    5E5F5A595B58   POP  the lot
    C3             RET
    ...                                   ;   p権
    E86700         CALL delay_user
    BE9195         MOV  SI,9591
    2E8B3E255C     MOV  DI,CS:[5C25]
    83EF16         SUB  DI,+16
    2E8A263D01     MOV  AH,CS:[013D]
    50             PUSH AH
    E892C7         CALL routine_LODSB     ; <<< __
    B42C           MOV  AH,2C
    CD21           INT  21                ;  DH - ᥪ㭤
    80E60F         AND  DH,0F
    80C641         ADD  DH,41
    58             POP  AX
    8AC6           MOV  AL,DH
    83EF04         SUB  DI,+4
    AB             STOSW
    E85A00         CALL INT_16_AH=01
    B400           MOV  AH,00
    CD16           INT  16
    24DF           AND  AL,DF             ; p㥬 ⢥
    3AC6           CMP  AL,DH             ; ⢥ p?
    75F3           JNZ  CALL INT_16_AH=01
    E807F3         go_ahead
   㦭 p ᬮ   p樨  ⢮ :  㬠, 
   ᥣ  ( ⮬ 砥 ) 祬-  
  ,   﫮:    筮 ⢥p,   ⠬,  
  p  p,    - p⥫쭮. ᬮp  , 믮塞
  ᫥  LODSB:       ᫮ p室: JZ ret,  p
  PUSH/POP  JAE after RET, 室騩    ret. ᫨ ⥯p  
  ,   ,  JZ _pp_ "p騩" p,  JAE  H
    {,      p  p  p}. ( 筮 ᥣ 
  ᪮쪮  p ᯮᮡ "" } p    p㡨
     p⥩騬 ᯮᮡ.
        7416 (JZ ret)  EB16 (JMP ret ᫮)
        7307 (JAE after ret)  7306 (JAE ret)
   H          稫.  ᫨    ⠩     
  譨      p ,    砥
    ᥡ  ᠬp騩    (   砥  类 p).
  ⠢  p,   ᪠ p  ... 
  ...  - .

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CRACKING MEM.EXE (version 2) (by +ORC, January 1996)

  ren map.exe map.ded
  symdeb map.ded
  -    s (cs+0000):0 Lffff 74 16 50 53 51 52 57
  xxxx:yyyy           ; ⢥ p
  -    e xxxx:yyyy    EB
  -    w
  -    q
  ren map.ded map.exe
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  p NIGEL !   p室!



                        :   CD-ROM 
                      ====================================


               [MARIO ANDRETTI] [REACH FOR THE SKY] [FS v.2.12]
               """"""""""""""""""""""""""""""""""""""""""""""""

 [   CD-ROM ]
 """""""""""""""""""""""""""""""""""""""""""
      -    㯮  稪  (p稪)   ⮬ p㪮⢥. 
 p    ᥩ.p⮢  p稪 稪    [MARIO
 ANDRETTI].
      <* 㬠 p,    - p p墠뢠 p
 pp뢠    ᮧ  'ᯥ᪮'   *>  ⮬ ( )
    p訬   ⥬      㤥  ᮧ  "p稪",  p
 "楯"     p,  ᯮ㥬  ⮩.      ⮤  
 ᯮ짮      InterNet ( p 䨣p firewall,
 . p)
         pp     쬥  'Mario  andretti  racing  challenge',
   p, ᯮ   ,    ᥣ 
        ⥬  pp祭  㯠,    ⮬  ᪮,
 뢠 "᢮" p.
          ⮩  pﭨ      p⮢  p稪 ᫥饣
 ᮤp:

  :0100 EB44           JMP 0146
  ...
  :0142 0000           ; 襬 ᬥ饭 Int 21h
  :0144 5887           ; 襬 ᥣ  Int 21h
  :0146 FA             CLI
  :0147 0E             PUSH CS
  :0148 1F             POP DS
  :0149 BCB403         MOV SP,03B4
  :014C FB             STI
  :014D 8C1EA901       MOV [01A9],DS      ; 襬 DS
  :0151 8C1EAD01       MOV [01AD],DS      ;  p
  :0155 8C1EB101       MOV [01B1],DS      ;    p
  :0159 B82135         MOV AX,3521        ; 稬 p INT 21h
  :015C CD21           INT 21             ;  ES:BX
  :015E 891E4201       MOV [0142],BX      ; 襬 ᬥ饭
  :0162 8C064401       MOV [0144],ES      ; 襬 ᥣ
  :0166 BA0201         MOV DX,0102
  :0169 B82125         MOV AX,2521        ; ⠭ INT 21h
  :016C CD21           INT 21             ;  DS:0102
  :016E 0E             PUSH CS
  :016F 07             POP ES             ; ES=CS
  :0170 BBB403         MOV BX,03B4
  :0173 83C30F         ADD BX,+0F
  :0176 B104           MOV CL,04
  :0178 D3EB           SHR BX,CL          ; BX= 3Ch
  :017A B8004A         MOV AX,4A00        ;   
  :017D CD21           INT 21             ;    3Ch  pp
  :017F BA9E01         MOV DX,019E        ; ds:dx= pp
  :0182 BBA501         MOV BX,01A5        ; es:bx = 
  :0185 B8004B         MOV AX,4B00        ; p㧨 ma.com
  :0188 CD21           INT 21
  :018A 2E8B164201     MOV DX,CS:[0142]   ; ⠭ p Int 21h
  :018F 2E8E1E4401     MOV DS,CS:[0144]
  :0194 B82125         MOV AX,2521
  :0197 CD21           INT 21
  :0199 B8004C         MOV AX,4C00        ; p訬 p
  :019C CD21           INT 21
  :019E 6D612E636F6D00 "ma.com"
        0000           p⥫
  :01A7 B2015887
  :01AB B2015887
  :O1AF B2015887
        0000           p⥫

 p  p⮢  p稪 pp뢠 21h:

  PUSHA
  CMP AX,2500               ;  㭪 25? {...  CMP AH,25???}
  JNZ ret
  CMP Word Ptr [0065], C00B ; p室, ᫨ [65] = C00B
  JNZ ret
  MOV  Byte Ptr [0060], EB  ; p樨  堪
  MOV  Byte Ptr [0061], 3C
  MOV  Byte Ptr [0062], 40  ; INC AX
  MOV  Byte Ptr [0063], 90  ; NOP
  MOV  Byte Ptr [0064], 48  ; DEC AX
  POPA
  JMP  FAR CS:[0142]        ; p p p쭮 p稪

      p    p  㤥  p뢠    p,   pp,
 뢠騩  Int 21h/f.25  ᬥ饭 65 㤥 室 p OR AX,AX
 ( 0B C0 ).  pp 㤥 p  ,  
 CS:[65]    JMP  3C,  ᨬ    ⮣,      pp p楤p
 ᠬpp  㢥p,     .
      祭          -   p楤p,   p    ᠫ,  㤥
 p⢮ 맮 Int 21 (  p㣮 pp뢠) 㭪樨 25 (
  p㣮 㭪樨),  楫  " "  pp.
       p   p㣮 pp.   p  'Reach for the skies'


 [REACH FOR THE SKIES]

   push all
   CMP  AH,3D               ;  㭪 3D? ( p 䠩 )
   JNZ  ret                 ; ᫨ ,  ret
   CMP  DX,13CE             ;    䠩 at 13CE?
   JNZ  ret                 ; ᫨ ,  ret
   MOV  AX,[BP+04]          ;  ⮬ 砥
   MOV  DS,AX
   CMP  Byte Ptr [B6DA],74  ; p p
   JNZ  015B
   CMP  Byte Ptr [B6DB],0F
   JNZ  015B
   CMP  Byte Ptr [B6DC],80
   JNZ  015B
   MOV  Byte Ptr [B6DA],EB  ; 稬
   MOV  Byte Ptr [B697],40
   MOV  Byte Ptr [B698],48  ; nop
   MOV  Byte Ptr [B699],90  ; nop
   MOV  Byte Ptr [B69A],40  ; nop
   MOV  Byte Ptr [B69B],48  ; nop
   MOV  DX,CS:[0165]
   MOV  DS,CS:[0167]
   MOV  AX,2521             ; ⠭ p
   INT  21
   POP  all
   JMP  FAR CS:[0165]

           p  74 0F  p EB 0F,  "NOP"
 p樨    B697    B69B.    襬 ᫥⥫쭮
 INC  AX, NOP, DEC AX   SBB.  p襥 ᭮ ᯮ짮
 p  p  p権    "墮"  NOP-:  ᮢp 奬
   ""  稭  NOP  p ⥡, ᫨   p
 ᫥⥫  NOP-.      ,ᥣ  㦭  롨p  H
 H   "HH" p襭.
            p    ⮤        ,  
 ⮭,    ᯮ p䨪 ᢮   p墠뢠
 p.

 [H  ]
 """"""""""""""""""""""""""
        筮,    筥    砫:  p ᥣ 뫠 箬 
   饣    饣     p 堪  .  p
 5    1/4        訥   p     ᪨  뫨 p塞
 (p  뫨  ⢨⥫쭮  ""   ᥣ 㦥  묥p)  騬
 ⮤     pp  뫮  pp  "ᢥp⢥"  ⥬
 "p"  (祢)  ᪠.  Cp ᪨  PC 筮 p砫 360  9
 ᥪp  p.
      H  ᭮     ,    祣: p 
    p   襩: floppy disk parameter block (FDPB)
  p楤p pp뢠,  ⥭/pp (INT 13h).
        奬   pp    ᥪp  p
   pp ᥪp ⫨  ⠭⭮ 512-⮢,  ᮧ 
 ᥪp      p,  - ⨯ 211,  p  pp 楫
 p    ᥪp.  ᫨    p㤥,  pp,  (祭 p)
 'VisiCalc',    㢨,    ᥪp  8   p 39  .
 ᫥    assembly  {砠?!}    c "ad hoc" ⨫⮩ ( ᯮ
 ᠬ⥫쭮    ᠭ  p㬥p,       
   ⨫,  p訥    p ᠭ  1984 (!)  稭 
 ᪮ [U-ZAP] ('Ulatra Utility')   'Freesoft company' {... 
 FDA    祣     p!}) ᮮ   p ᥪp
 뫨 ,  pp  ,  ᫨  뫨 pp  訡
 CRC (p㣮  ⠪  p).
      pp   䫮  ᪮  ᠭ    BIOS:  p  pp뢠  1Eh
 ᮤp p  pp. p  FDPB ᫥騥:

 饭      H祭           p  ?       pp
     0    p 蠣 室                                 DF
     1    p p㧪                               02
     2    p  ⮭ p                      25
     3    ᫮   ᥪp                                 02
     4    Hp ᫥ ᥪp                             12
     5    Gap-                                            1
     6                                              FF
     7     GAP p pp                         54
     8    "pp騩 "                                F6
     9    p ⠭                              0F
     A    p ᪠ p                                02

 0)  <*  p 蠣 室, 室 ᪮  p饭  
 p  p *>
 1)  <*  p 蠣 室, 室 ᪮  p饭  
 p  p  p DMA *>
 2)  p    몫祭  p.  筮   ᯮ. {- 
 ᮬ,   ᯮ...}
 3)  -!   p  --ᥪp!  ᫨      "0",  PC
 p  128-⮢  ᥪp. "1" 砥 pp ᥪp 256 , "2"
 砥 512  ( ⠭p pp DOS),  "3" 砥 1024-⮢
 ᥪp.
 4)  H訩 p ᥪp  p:  ᯮ p pp
  pp DOS   ᥪp 室   p.
 5)  Gap  length     ⥭  ᪥:    ,    p ,  
 砥  訡  CRC,    p ᥪp  pp⭮ pp.
 筮   p    ᪫祭,  pp
  ⨫⮩ U-Format.
 6)    :    ᮤp  ᫮   ᥪp   祭
  ᥪp   #4  .
 7)  ᫮      GAP   ᥪp:  ⠪ ᯮ ⮫쪮  p
 pp ᯥ᪨ p.
 8)  pp騩     :   , p 㤥 "ᠭ" p
 pp.
 9)  ⠭ p .
 A)  p "p" p. H   .
          쭮  ᫠  pp    ᥪp   ᪥
     ᥣ  ᯮ짮 format.com  砬  p "/t:"
  "/n:"
                   FORMAT /t:tracks /n:sectors

 ᫨     p㦨    pp  
 [Debug.exe]  [SymDeb.exe]   ᫥騥 :

   -    d 0:78    l 4                 ;  p BPB
   0000:0070     22 05 00             ; p ⢥ p
   -    d 0:522   l a                 ; 稬 10 ⮢ BPB
   0000:520 DF 02 25 02 12 1B FF...   ; ᬮp ⠡

 ,      ⠭p ᪮ p  DOS p pp
 ᥪp 512 , ⮬  p 5.25   ᪠:

                  40t*8s*512b=163.840  (160Kb)
                  40t*9s*512b=184.320  (180Kb)

   -p 5.25" 䫮:

               40t*8s*512b*2sides=327.680  (320Kb)
               40t*9s*512b*2sides=368.640  (360Kb)

      H稭    DOS 3.0 (,    p!) p 
 p      ᪮:  IBM-AT  (80286  CPU)   ⠪ 뢠 5.25"
 ᪥  "᮪  ⭮",  ᯮᮡ  뢠 1,2  15 ᥪp 
 p.
              80t*15s*512b*2sides=1.228.800  (1.2Mb)

        뫨    ᥬ⭮  ᯮ㥬  ᥩ  3.5" 䫮,
 襭  ⪨ ⨪ p.   :

             3.5-inch double sided/double density     720K
             3.5-inch double sided/quad density (HD)  1440K
             3.5-inch double sided/high density       2880K

 <*    ᪠  ᠭ 㭪権 INT 13h,   p뢠襥 ᠭ 
 p᪨  ⥬ p筨 *>

 [MS Flight simulator (cp p 2.12,  1985 !)]
         ,      奬      ᪨p  맮
 pp뢠.   ᮡ pp  ᪮ , p  INT
 13h ("᪮" pp뢠).
      ᫨      ⠥    ⠪ pp, 筮  
 "CD  13",   p⠢ 設 p INT 13.    
  뢠  pp뢠  pp ᯥ᪮ ᥪp  ᪥,
      pp,    "CD 13",   ⥯p?
       ᪮쪮 孨᪨ p, 騥  ᪨p
  p .     p  p砥 孮.

          ᥪ    ⭠ 맮 INT 13h: ⥭ ᥪp
 p  A,  p  0,  p 9h, ᥪp FFh,  ᫥饬 p 
 訡  10 (訡 CRC)

      cs:1000   MOV  AH,02     ; 㭪 ⥭
      cs:1002   MOV  AL,01     ;   ᥪp
      cs:1004   MOV  CH,29     ; p 29h
      cs:1006   MOV  CL,FF     ; ᥪp FFh
      cs:1008   MOV  DX,0000   ; p 0 p A
      cs:100B   XOR  BX,BX     ; ⨬ 0...
      cs:100D   MOV  DS,BX     ; ... DS pp
      cs:100F   PUSHF          ; 䫠  ⥪
      cs:1010   PUSH CS        ; CS -  ⥪
      cs:1011   CALL 1100      ; IP  ⥪
      cs:1014   CMP AH,10      ; 訡 CRC?
      cs:1017   ...            ; rest of verification code
      ...
      ...
      cs:1100   PUSHF          ; 䫠  ⥪
      cs:1101   MOV  BX,004C   ; p p INT 13h
      cs:1104   PUSH [BX+02]   ; ⠫ CS p INT 13h
      cs:1107   PUSH [BX]      ; ⠫ IP p INT 13h

 p⥫쭮,          INT  13,  ⮬  ᫨   p
 p  p  ᪠  p  CD 13  設 ,   
  pp .

        p㣮  p:   p pp뢠, ⠪ , pp,
 INT  10,  룫拉  筮  p,   '10'  '13' ( ⥬
  '13'  '10')  .  'CD 13'  祣  .

         訩  ᪨p p, p  - 뢠 ( 
     INT  13h)    jmp    ᥪ  ,  p 'in
 extenso' p楤p pp뢠.

 [H H  ]
      Cp   p  [debug.com]  뢠  "p᪨  袥p᪨  "
 騪.      p㦠, 뢠. 뢠  p
 ᮫  ᪮  ᥪp.  ⢮  ᥪp  稭    p
 ᥪp      p   0,  ᫥騩  ᥪp    p  0,  p  1  (
 p),  ⥬ p頥  p p, p 1  ⠪  
   ᪠,  80h (128d) ᥪp   p稭  p. 
   㪠  p  p,  p  (0=,1=), 砫 ᥪp  ᫮
 뢠 ᥪp. Hpp:
   -   l 100 0 10 20
    p,  p DEBUG- p㧨  DS:100  ᪠ , 稭 
 ᥪp 10h 20h ᥪp.   p p / ᮡ p
 .  ᫨     訡, pp memory location for that data.
    㤥 pᥭ  p⨢訩 訡,  ⮪ 
   p  ᮡp  ᪮筮 p ⮪ ⥭.
              ᫥饣  .    堪 pp
 p⨢:  MS  Flight  simulator  (p  p  2.12  1985!).  p
 pp ᯮ ᫥ pp  奬:  ᪥  뤨
 ⮫쪮  p⪨ "p맮",  fs.com,  ᫥騬 ᫥묨
 pﬨ:

      :0100 FA             CLI                ; 祬   ?
      :0101 33C0           XOR AX,AX          ; AX=0
      :0103 8ED0           MOV SS,AX          ; SS=0
      :0105 BCB0C0         MOV SP,C0B0        ; SP=C0B0
      :0108 8EC0           MOV ES,AX          ; ES=0
      :010A 26C70678003001 MOV Wptr ES:[0078],0130 ;Wp 0:78=130
      :0111 268C0E7A00     MOV ES:[007A],CS   ; 0:7A=Segment
      :0116 BB0010         MOV BX,1000        ; BX=1000
      :0119 8EC3           MOV ES,BX          ; ES=1000
      :011B 33DB           XOR BX,BX          ; BX=0
      :011D B80102         MOV AX,0201        ; ⠥ 1  ᥪp
      :0120 BA0000         MOV DX,0000        ;  0,p 0
      :0123 B96501         MOV CX,0165        ; p 1, ᥪp 65 (!)
      :0126 CD13           INT 13             ; INT 13/AH=2
      :0128 B83412         MOV AX,1234        ; AX=1234
      :012B EA00000010     JMP 1000:0000      ; p室  p⠭ 
      :0130 CF             IRET               ; ᯮ㥬 ret

        ,   p⠥  p ,  ⠪-?   
     ᠬ  ,   p砥   ᮢp (p 
 ᮢp)  奬    (  㢨  ᫥饬 p),  
 "p" ᥪp / ⫨⥫ .
     <*  㬠 ᫥ *>
      H᪮쪮   ᫮     "p"  奬  .    p,  
 pp ! Hp  :

      -- HH
      --  
      -- H  

        p DOS-pp 뫨  饭... 
   ᠦ,  뢠 Windows-pp  p pp樮
 p.           p  "3",    p        
 pp樮  p,  p p  , pp"66666666",
   뢠  WinIce,    "666666666",  ⠪   襩 㢥p 
   ,  ⠭  BreakPoint  on  Write  砫 pp樮
 p,  ᫥ , 㫨p騩  訬 .
        p쭮  砥  [Chirs]       "㡨"  pאַ 
 pp    ᮧ Key generator, p 㤥 pp p .
     㤥  p        ,  ⮫쪮   "
 ⥬᪨  p"    奬    㤥  p⨢
 "p⨢-⥬᪨"    奬        (⨯    MOD4WIN    /c.
 Windows-p),           砥  "ᥢ-砩  XOR-"
 ᨬ, ⠢  .

      -- ,    ᥣ p,   ⠭   
  p  ⮬ p㤭襬 p , ᯮᮡ ppp,
 p堢    -pﯠ p, ⨯ 95- ℠...
 ,   pp, ᪠  , p 뢠 .
      ﭨ , p p襩 p⨭- { p堫  ᢮
 p楯⮬    㡨  줠,  ⨩᪨    p-p 誠p
 ᫨!},  ᬮp p 冷  襣 ,  p 
 ,  p㦠騥  :    p  -  騥   7.30 p,  
 ⮫  p  設,      p     ᪮筮
   p⥫  p,  ⫨     p (᫨ 
 ⫨  ⥫  p   ⮬ 謠p ⢥), p 楫
   楫 ᪠ p㣨 設,    p㣮  㯨  設..
      祬      ᬮp   ,   p p㣠,  
 p,     p  設 ⠬    ... p ⮬ ⠢
 ᥡ   "p p 孮"? 祬     ? H
   ,   ⮩ p ⮫ p,  ᪮p 㤥 p饭,  
     ,        ⮣ ⥫,  ⮬ p ⢠ 
 易  p,    ⢥,  祣     ... p,
 p      ᥡ  㤠筮  p饭  p , p
        ᯮ        p    
 㯮p   p  .      p㤭  p  p  ᥣ譥
 p⨨   ...  ᫨   ᤥ...  ᯮ  ᪮p
    p   ⨯筮  ,    祬 ⢨⥫쭮  宦 
 ᠬ  ᥡ      祬    뢠 ᮢ  
 ᢮    p⭥p.  롨p , p   ⥫,  ᫨
    ﭥ   ᮢ         p,  p  ⪠
 ᬮp訪... , p,  뢠   ,ᮡ⢥,
 "",       ᫥...


                              WINDOWS
                            =======================

                                 [WINPGP.EXE]
                                 """"""""""""
 H  H:      "p" ⨫ p
 """""""""""""""""""""""  Windows... 뢠 訥 p  Windows 95
                          ⮬ p  " "    -
                          p p  Windows 3.x  Winodws NT

  H: p  NE  砥         ᯮ塞  䠩  
 """""""""" p᪮ ᨬ쭮 ⠡.   堪p!

 [HHHH ]
 """""""""""""""""""""""""""""
 "ᮡ  ⫠"  -       ᭮  㬥p ᢮
 Windows.   㬥p 㭪  p樮 ⥬ MS-DOS:
 MicriSoft 㫨p ⨬ p  p  p뭪 p樮
 ⥬  ᥣ譥   (MS-DOS,Winodws 3.x,Windows-95)   㤭묨
 楫ﬨ:

    --        p⮢        p⢠    (⥬   
 㬥p  㭪権,    p  ᯮ  )   p⨢
 Borland   ⨬ ⥬.

    --     ⠢    ᫥ "pp⮢" ᯮ짮 Winodows
   "p  騪",    ⮫쪮 p MicroSoft (᫨  ) 
 ⢮p,  ⮬    㤥  楤  p⥫  p-pﯠ
 MicroSoft-᪨ ,    蠭 p   .

        p,  ⮫쪮 堪p᪨  p p⨢
 ⮣  㤮魮  p.    p娡⭮  p⥫⢮    p
 -p-  pp뢠  䨣  ⪮  "p뭮筮 ᢮"  ⮣  
     ⠪    p⥫쭮    p⨥.    <*   童p쭠,
 p p p⨪  p p⥫⢠  p p *>
      C    Windows    p ᪠  MS-DOS,  
 祭      㭪  "p㧨,      믮", ᯮ㥬
 ⫠稪 ⠪  [DEBUG], [SYMDEB]  [CODEVIEW] 뫠 "ppp"
 MicroSoft.


                  2.   ?   ⢮.
                 ============================================
   ᫥  室  p楤p  " 㯠"  
 pﬨ.        ᫥騩 p⪨ . H ,
   㤥  堪  ᢮ ᮡᢥ p ,   
 "娭p"      p    ᭮ p楤p !  ⮬
 砥 pp pp   p.
 This_loop_checks_that_numbers_are_numbers:
 1B0F:2B00 C45E06    LES    BX,[BP+06]  ; set/reset pointer
 1B0F:2B03 03DF      ADD    BX,DI
 1B0F:2B05 268A07    MOV    AL,ES:[BX]  ; get number
 1B0F:2B08 8846FD    MOV    [BP-03],AL  ; store
 1B0F:2B0B 807EFD30  CMP    BYTE PTR [BP-03],30
 1B0F:2B0F 7C06      JL     2B17        ; less than zero?
 1B0F:2B11 807EFD39  CMP    BYTE PTR [BP-03],39
 1B0F:2B15 7E05      JLE    2B1C        ; between 0 & 9?
 1B0F:2B17 B80100    MOV    AX,0001     ; no, set flag=1
 1B0F:2B1A EB02      JMP    2B1E        ; keep flag
 1B0F:2B1C 33C0      XOR    AX,AX       ; flag=0
 1B0F:2B1E 0BC0      OR     AX,AX       ; is it zero?
 1B0F:2B20 7507      JNZ    2B29        ; flag NO jumps away
 1B0F:2B22 8A46FD    MOV    AL,[BP-03]  ; Ok, get number
 1B0F:2B25 8842CC    MOV    [BP+SI-34],AL ; Ok, store number
 1B0F:2B28 46        INC    SI          ; inc storespace
 1B0F:2B29 47        INC    DI          ; inc counter
 1B0F:2B2A C45E06    LES    BX,[BP+06]  ; reset pointer
 1B0F:2B2D 03DF      ADD    BX,DI       ; point next number
 1B0F:2B2F 26803F00  CMP    BYTE PTR ES:[BX],00 ; input end?
 1B0F:2B33 75CB      JNZ    2B00        ; no:loop next num

      ⥯p     祢,        "p쭠"    p    
 p   [BP+  SI-34]... ⠭ BreakPoint     
 ᫥饣  "娭樮"     ppp p. ,
  p짮 : p p⥫ "-"  10 p ᫨ .
      :  1  2  1  2  1  2  1  2  1  2 End
      1E7F:92E2 31 32 31 32 31 32 31 32 31 32 00 45 AF 1F 70 9B
    Stack ptr:  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

 p    pᬮp  "p" p楤p , p pp
 pp樮     "믫뢠" , ᫨   "". ,
  ⥫  ᫥饬  .

 check_if_sum_other_9_numbers_=_remainder_of_the_third_number:
 :4B79 8CD0       MOV    AX,SS ; we'll work inside the stack...
 :4B7B 90         NOP
 :4B7C 45         INC    BP
 :4B7D 55         PUSH   BP    ; save real BP
 :4B7E 8BEC       MOV    BP,SP ; BP = stackpointer
 :4B80 1E         PUSH   DS    ; save real Datasegment
 :4B81 8ED8       MOV    DS,AX ; Datasegment = stacksegment
 :4B83 83EC04     SUB    SP,+04
 :4B86 C45E06     LES    BX,[BP+06] ; BX points input_start
 :4B89 268A07     MOV    AL,ES:[BX] ; load first number
 :4B8C 98         CBW               ; care only for low
 :4B8D C45E06     LES    BX,[BP+06] ; reset pointer
 :4B90 50         PUSH   AX         ; save 1st number
 :4B91 268A4701   MOV    AL,ES:[BX+01] ; load 2nd number
 :4B95 98         CBW               ; only low
 :4B96 8BD0       MOV    DX,AX      ; 2nd number in DX
 :4B98 58         POP    AX         ; get 1st number
 :4B99 03C2       ADD    AX,DX      ; sum with second
 :4B9B C45E06     LES    BX,[BP+06] ; reset pointer
 :4B9E 50         PUSH   AX         ; save sum
 :4B9F 268A4707   MOV    AL,ES:[BX+07] ; load 8th number
  4BA3 98         CBW               ; only low
  4BA4 8BD0       MOV    DX,AX      ; 8th number in DX
  4BA6 58         POP    AX         ; old sum is back
  4BA7 03C2       ADD    AX,DX      ; sum 1+2+8
  4BA9 C45E06     LES    BX,[BP+06] ; reset pointer
  4BAC 50         PUSH   AX         ; save sum
  4BAD 268A4703   MOV    AL,ES:[BX+03] ; load 4rd number
  4BB1 98         CBW               ; only low
  4BB2 8BD0       MOV    DX,AX      ; #4 in DX
  4BB4 58         POP    AX         ; sum is back
  4BB5 03C2       ADD    AX,DX      ; sum 1+2+8+4
  4BB7 C45E06     LES    BX,[BP+06] ; reset pointer
  4BBA 50         PUSH   AX         ; save sum
  4BBB 268A4704   MOV    AL,ES:[BX+04] ; load 5th number
  4BBF 98         CBW               ; only low
  4BC0 8BD0       MOV    DX,AX      ; #5 in DX
  4BC2 58         POP    AX         ; sum is back
  4BC3 03C2       ADD    AX,DX      ; 1+2+8+4+5
  4BC5 C45E06     LES    BX,[BP+06] ; reset pointer
  4BC8 50         PUSH   AX         ; save sum
  4BC9 268A4705   MOV    AL,ES:[BX+05] ; load 6th number
  4BCD 98         CBW               ; only low
  4BCE 8BD0       MOV    DX,AX      ; #6 in DX
  4BD0 58         POP    AX         ; sum is back
  4BD1 03C2       ADD    AX,DX      ; 1+2+8+4+5+6
  4BD3 C45E06     LES    BX,[BP+06] ; reset pointer
  4BD6 50         PUSH   AX         ; save sum
  4BD7 268A4706   MOV    AL,ES:[BX+06] ; load 7th number
  4BDB 98         CBW               ; only low
  4BDC 8BD0       MOV    DX,AX      ; #7 in DX
  4BDE 58         POP    AX         ; sum is back
  4BDF 03C2       ADD    AX,DX      ; 1+2+8+4+5+6+7
  4BE1 C45E06     LES    BX,[BP+06] ; reset pointer
  4BE4 50         PUSH   AX         ; save sum
  4BE5 268A4708   MOV    AL,ES:[BX+08] ; load 9th number
  4BE9 98         CBW               ; only low
  4BEA 8BD0       MOV    DX,AX      ; #9 in DX
  4BEC 58         POP    AX         ; sum is back
  4BED 03C2       ADD    AX,DX      ; 1+2+8+4+5+6+7+9
  4BEF C45E06     LES    BX,[BP+06] ; reset pointer
  4BF2 50         PUSH   AX         ; save sum
  4BF3 268A4709   MOV    AL,ES:[BX+09] ; load 10th #
  4BF7 98         CBW               ; only low
  4BF8 8BD0       MOV    DX,AX      ; #10 in DX
 :4BFA 58         POP    AX         ; sum is back
 :4BFB 03C2       ADD    AX,DX      ; 1+2+8+4+5+6+7+9+10
 :4BFD 0550FE     ADD    AX,FE50    ; clean sum to 0-51
 :4C00 BB0A00     MOV    BX,000A    ; BX holds 10
 :4C03 99         CWD               ; only AL
 :4C04 F7FB       IDIV   BX         ; remainder in DX
 :4C06 C45E06     LES    BX,[BP+06] ; reset pointer
 :4C09 268A4702   MOV    AL,ES:[BX+02] ; load now # 3
 :4C0D 98         CBW               ; only low
 :4C0E 05D0FF     ADD    AX,FFD0    ; clean # 3 to 0-9
 :4C11 3BD0       CMP    DX,AX  ; remainder = pampered #3?
 :4C13 7407       JZ     4C1C       ; yes, go on good guy
 :4C15 33D2       XOR    DX,DX  ; no! beggar off! Zero DX
 :4C17 33C0       XOR    AX,AX  ;     and FLAG_AX = FALSE
 :4C19 E91701     JMP    4D33       ; go to EXIT
 let's_go_on_if_first_check_passed:
 :4C1C C45E06     LES    BX,[BP+06] ; reset pointer
 :4C1F 268A4701   MOV    AL,ES:[BX+01] ; now load #2 anew
 :4C23 98         CBW               ; only low
 :4C24 05D7FF     ADD    AX,FFD7    ; pamper adding +3
 :4C27 A38D5E     MOV    [5E8D],AX  ; save SEC_+3
 :4C2A 3D0900     CMP    AX,0009    ; was it < 9? (no A-F)
 :4C2D 7E05       JLE    4C34       ; ok, no 0xletter
 :4C2F 832E8D5E0A SUB    WORD PTR [5E8D],+0A ; 0-5 if A-F
 :4C34 C45E06     LES    BX,[BP+06] ; reset pointer
 :4C37 268A07     MOV    AL,ES:[BX] ; load 1st input number
 :4C3A 98         CBW               ; only low
 :4C3B 05C9FF     ADD    AX,FFC9    ; pamper adding +7
 :4C3E A38F5E     MOV    [5E8F],AX  ; save it in FIR_+7
 :4C41 0BC0       OR     AX,AX      ; if #1 > 7
 :4C43 7D05       JGE    4C4A       ; no need to add 0xA
 :4C45 83068F5E0A ADD    WORD PTR [5E8F],+0A ; FIR_+7 + 0xA
 now_we_have_the_sliders_let's_prepare_for_loop:
 :4C4A C45E0E     LES    BX,[BP+0E] ; Set pointer to E
 :4C4D 26C747020000 MOV  WORD PTR ES:[BX+02],0000 ; 0 flag
 :4C53 26C7070000   MOV  WORD PTR ES:[BX],0000    ; 0 flag
 :4C58 C706975E0900 MOV  WORD PTR [5E97],0009     ; counter=9
 :4C5E E99500     JMP    4CF6       ; Jmp check_counter
 loop_8_times:
 :4C61 C45E06     LES    BX,[BP+06] ; reset pointer
 :4C64 031E975E   ADD    BX,[5E97]  ; add running counter
 :4C68 268A07     MOV    AL,ES:[BX] ; load # counter+1
 :4C6B 98         CBW               ; only low
 :4C6C 50         PUSH   AX         ; save 10th number
 :4C6D A18D5E     MOV    AX,[5E8D]  ; ld SEC_+3 down_slider
 :4C70 BA0A00     MOV    DX,000A    ; BX holds 0xA
 :4C73 F7EA       IMUL   DX         ; SEC_+3 * 0xA
 :4C75 03068F5E   ADD    AX,[5E8F]  ; plus FIR_+7 up_slider
 :4C79 BAA71E     MOV    DX,1EA7    ; fixed segment
 :4C7C 8BD8       MOV    BX,AX ; BX = Lkup_val=(SEC_+3*10+FIR_+7)
 :4C7E 8EC2       MOV    ES,DX      ; ES = 1EA7
 :4C80 268A870000 MOV    AL,ES:[BX+0000] ; ld 1EA7:[Lkup_val]
 :4C85 98         CBW               ; only low: KEY_PAR
 :4C86 8BD0       MOV    DX,AX      ; save KEY_PAR in DX
 :4C88 58         POP    AX         ; repops 10th number
 :4C89 03C2       ADD    AX,DX      ; RE_SULT=KEY_PAR+#10
 :4C8B 05D0FF     ADD    AX,FFD0    ; polish RE_SULT
 :4C8E 99         CWD               ; only low: RE_SULT
 :4C8F 8956FC     MOV    [BP-04],DX ; save here KEY_PAR [9548]
 :4C92 8946FA     MOV    [BP-06],AX ; save here RE_SULT [9546]
 :4C95 0BD2       OR     DX,DX      ; KEY_PAR < 0?
 :4C97 7C0F       JL     4CA8       ; yes: KEY_PAR < 0
 :4C99 7F05       JG     4CA0       ; no: KEY_PAR > 0
 :4C9B 3D0900     CMP    AX,0009    ; KEY_PAR = 0
 :4C9E 7608       JBE    4CA8 ; no pampering if RE_SULT < 9
 :4CA0 836EFA0A   SUB    WORD PTR [BP-06],+0A ; else pamper
 :4CA4 835EFC00   SBB    WORD PTR [BP-04],+00 ; and SBB [9548]
 :4CA8 C45E0E     LES    BX,[BP+0E] ; reset pointer to E
 :4CAB 268B4F02   MOV    CX,ES:[BX+02] ; charge CX [958C]
 :4CAF 268B1F     MOV    BX,ES:[BX] ; charge BX slider [958A]
 :4CB2 33D2       XOR    DX,DX      ; clear DX to zero
 :4CB4 B80A00     MOV    AX,000A    ; 10 in AX
 :4CB7 9A930D2720 CALL   2027:0D93  ; call following RO_routine

   ⮫쪮  p楤p,  뢠  襩  ⮩  横 LOOP (⮬ 8
 p),  ᥬp WCB.   ,  ,  
 諨   p᪫: DX=0, AX=0xA, CX=[958C] and BX=[958A]...
  1.0D93  56      push   si     ; save si
  1.0D94  96      xchg   ax, si ; ax=si, si=0xA
  1.0D95  92      xchg   ax, dx ; dx=0xA ax=dx
  1.0D96  85C0    test   ax, ax ; TEST this zero
  1.0D98  7402    je     0D9C   ; zero only 1st time
  1.0D9A  F7E3    mul    bx     ; BX slider! 0/9/5E/3B2...
  1.0D9C >E305    jcxz   0DA3   ; cx=0? don't multiply!
  1.0D9E  91      xchg   ax, cx ; cx !=0? cx = ax & ax = cx
  1.0D9F  F7E6    mul    si     ;     ax*0xA in ax
  1.0DA1  03C1    add    ax, cx ; ax=  ax*0xA+cx = M_ULT
  1.0DA3 >96      xchg   ax, si ; ax=0xA; si evtl. holds M_ULT
  1.0DA4  F7E3    mul    bx     ; ax= bx*0xA
  1.0DA6  03D6    add    dx, si ; dx= dx_add
  1.0DA8  5E      pop    si     ; restore si
  1.0DA9  CB      retf          ; back to caller with two parameters: DX and AX
ack_to_main_protection_loop_from_RO_routine:
  4CBC C45E0E     LES    BX,[BP+0E] ; reset pointer
  4CBF 26895702   MOV    ES:[BX+02],DX ; save R_DX par  [958C]
  4CC3 268907     MOV    ES:[BX],AX ; save R_AX par     [958A]
  4CC6 0346FA     ADD    AX,[BP-06] ; add to AX RE_SULT [9546]
 :4CC9 1356FC     ADC    DX,[BP-04] ; add to DX KEY_PAR [9548]
 :4CCC C45E0E     LES    BX,[BP+0E] ; reset pointer
 :4CCF 26895702   MOV    ES:[BX+02],DX ; save R_DX+KEY_PAR [958C]
 :4CD3 268907     MOV    ES:[BX],AX ; save R_AX+RE_SULT    [958A]
 :4CD6 FF0E8D5E   DEC    WORD PTR [5E8D] ; down_slide SEC_+3
 :4CDA 7D05       JGE    4CE1       ; no need to add
 :4CDC 83068D5E0A ADD    WORD PTR [5E8D],+0A  ; pamper adding 10
 :4CE1 FF068F5E   INC    WORD PTR [5E8F] ; up_slide FIR_+7
 :4CE5 A18F5E     MOV    AX,[5E8F]  ; save upslided FIR_+7 in AX
 :4CE8 3D0900     CMP    AX,0009    ; is it over 9?
 :4CEB 7E05       JLE    4CF2       ; no, go on
 :4CED 832E8F5E0A SUB    WORD PTR [5E8F],+0A ; yes, pamper -10
 :4CF2 FF0E975E   DEC    WORD PTR [5E97]  ; decrease loop counter
 check_loop_counter:
 :4CF6 833E975E03 CMP    WORD PTR [5E97],+03  ; counter = 3?
 :4CFB 7C03       JL     4D00       ; finish if counter under 3
 :4CFD E961FF     JMP    4C61       ; not yet, loop_next_count
 loop_is_ended:
 :4D00 C45E06     LES    BX,[BP+06] ; reset pointer to input
 :4D03 268A4701   MOV    AL,ES:[BX+01] ; load 2nd number (2)
 :4D07 98         CBW               ; only low
 :4D08 05D0FF     ADD    AX,FFD0    ; clean it
 :4D0B BA0A00     MOV    DX,000A    ; DX = 10
 :4D0E F7EA       IMUL   DX         ; AX = SEC_*10 = 14
 :4D10 C45E06     LES    BX,[BP+06] ; reset pointer
 :4D13 50         PUSH   AX         ; save SEC_*10
 :4D14 268A07     MOV    AL,ES:[BX] ; load 1st number (1)
 :4D17 98         CBW               ; only low
 :4D18 8BD0       MOV    DX,AX      ; save in DX
 :4D1A 58         POP    AX         ; get SEC_*10
 :4D1B 03C2       ADD    AX,DX      ; sum SEC_*10+1st number
 :4D1D 05D0FF     ADD    AX,FFD0    ; clean it
 :4D20 99         CWD               ; only low
 :4D21 C45E0A     LES    BX,[BP+0A] ; get pointer    to   [9582]
 :4D24 26895702   MOV    ES:[BX+02],DX ; save 1st (1) in  [9584]
 :4D28 268907     MOV    ES:[BX],AX ; save FINAL_SUM (15) [9582]
 :4D2B 33D2       XOR    DX,DX      ; DX = 0
 :4D2D B80100     MOV    AX,0001    ; FLAG TRUE !
 :4D30 E9E6FE     JMP    4C19       ; OK, you_are_a_nice_guy
 EXIT:
 :4D33 59         POP    CX         ; pop everything and
 :4D34 59         POP    CX         ;  return with flag
 :4D35 1F         POP    DS         ;  AX=TRUE if RegNum OK
 :4D36 5D         POP    BP         ;  with 1st # in     [9584]
 :4D37 4D         DEC    BP         ;  with FINAL_SUM in [9582]
 :4D38 CB         RETF

   p  p襢騩  .  p   p窥 :486,
     p    ᯨ᪠ 㪠⥫ ⥪  LES BX,[BP+06]; 
 p 㪠뢠  砫  p,  p ᬮp饩  "-",
  p  10 ⮢, 稢 p⥫ 00.

