home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / hackers / tools / nsk.arj / UNLOCK / R_CL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-19  |  2.5 KB  |  101 lines

  1. /************************************************************************
  2. *   R_CL.C    -  Åα«úαá¼¼á ß¡∩Γ¿∩ ºáΘ¿Γδ ß Σá⌐½«ó, ºáΘ¿ΘÑ¡¡δσ »á¬ÑΓ«¼ *
  3. *           COPYLOCK.                        *
  4. *                  äá¡¡á∩ »α«úαἼᠡỿßá¡á ¡á ∩ºδ¬Ñ Æurbo C++.        *
  5. *                  Åα¿ßΓ䬫ó«τ¡δ⌐ ¼Ñσá¡¿º¼ ºáΘ¿Γδ ºá¼Ñ¡∩ÑΓß∩ Σá⌐½«¼     *
  6. *                  DMP.BIN                        *
  7. *              çá»π߬: R_CL <¿¼∩ ºáΘ¿ΘÑ¡¡«ú« Σá⌐½á>            *
  8. *   04.10.91.       ÇóΓ«α ä«½ú¿¡ Ç.à.                    *
  9. ************************************************************************/
  10.  
  11. #include <dos.h>
  12. #include <io.h>
  13. #include <alloc.h>
  14. #include <fcntl.h>
  15.  
  16. int fd1,fd2;
  17.  
  18. main ( int argc, char *argv[] )
  19.  
  20. {
  21.    char  buf1[0x20];
  22.    char  far *buf2;
  23.    int  cc,err(int i_o, char *fil_nam);
  24.    unsigned cs,ip,*p,fp;
  25.  
  26.     if ( argc !=2 )
  27.     {
  28.        printf ( " ìÑóÑα¡«Ñ ¬«½¿τÑßΓó« »áαá¼ÑΓα«ó!\n" ) ;
  29.        return  -3 ;
  30.     }
  31.  
  32.     if ( ( fd1 = _open ( argv[1], O_RDWR )) == -1 )
  33.     {
  34.        printf ( " öá⌐½ %s ¡Ñ ¡á⌐ñÑ¡ !\n", argv[1] ) ;
  35.        return  -4 ;
  36.     }
  37.  
  38.     if ( ( fd2 = _open ( "dmp.bin", O_RDONLY )) == -1 )
  39.     {
  40.        printf ( "öá⌐½ DMP.BIN ¡Ñ ¡á⌐ñÑ¡ !\n" ) ;
  41.        _close ( fd1 ) ;  return  -5 ;
  42.     }
  43.  
  44.     if ( _read ( fd1, buf1, 0x20 ) == -1 )
  45.        return  err ( 1, argv[1] ) ;
  46.  
  47.     if ( *buf1 == 0xe9 )  fp = 1 ;
  48.     else  if ( *buf1 == 0x4d && buf1[1] == 0x5a )  fp = 0 ;
  49.           else  goto  notcpylck ;
  50.  
  51.     if ( fp )  { p = (unsigned *)(buf1 + 1) ;
  52.              cs = 0 ;  ip = *p + 3 ;
  53.            }
  54.     else       { p = (unsigned *)(buf1 + 8) ;
  55.              cs = p[0] + p[7] ;  ip = p[6] ;
  56.            }
  57.  
  58.     lseek ( fd1, ((long)cs<<4)+ip-0x20, 0 ) ;
  59.     if ( _read ( fd1, buf1, 9 ) == -1 )
  60.        return  err ( 1, argv[1] ) ;
  61.  
  62.     if ( (*buf1 != 0x52 || *buf1 != 0x4c) && buf1[8] != 0x16 )
  63.     {
  64. notcpylck:
  65.        printf ( " ÄτÑ¡∞ ªá½∞, ¡« φΓá ºáΘ¿Γá ¼¡Ñ ¡Ñ »« ºπíá¼.\n" ) ;
  66.        cc = 0 ;  goto  clos ;
  67.     }
  68.  
  69.     if ( (buf2 = farmalloc ( 0x1290 )) == 0 )
  70.     {  printf ( "ìÑñ«ßΓáΓ«τ¡« »á¼∩Γ¿!\n" ) ;
  71.        cc = 0 ;  goto  clos ;  }
  72.  
  73.     if ( _read ( fd2, buf2, 0x1290 ) == -1 )
  74.     {  cc = -1 ; goto  clos ;  }
  75.  
  76.     lseek ( fd1, ((long)cs<<4)+ip, 0 ) ;
  77.  
  78.     if ( _write ( fd1, buf2, 0x1290 ) == -1 )
  79.     {  farfree ( buf2 ) ;  return  err ( 2, argv[1] ) ;  }
  80.  
  81.     cc = 1 ;
  82. clos:
  83.     farfree ( buf2 ) ;
  84.     _close ( fd1 ) ;
  85.     _close ( fd2 ) ;
  86.     return  cc ;
  87. }
  88.  
  89. /******************************/ int err  /*********************************/
  90.  
  91. ( int rw, char *f )
  92.  
  93. {
  94.    char msg[][6] = { "τΓÑ¡¿∩","ºá»¿ß¿"};
  95.  
  96.     printf ("ÄΦ¿í¬á %s ó Σá⌐½Ñ %s !\n", msg[rw-1], f ) ;
  97.     _close ( fd1 ) ;  _close ( fd2 ) ;
  98.  
  99.     return  -rw ;
  100. }
  101.