home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / hackers / tools / nsk.arj / FTRACE / RV.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-20  |  1.7 KB  |  82 lines

  1. /* Åα«úαá¼¼á ñ½∩ áóΓ«¼áΓ¿τÑ߬«ú« ß½ÑªÑ¡¿∩ ºá
  2. «íαáí«Γτ¿¬«¼ 21 ¿ 13 »αÑαδóá¡¿∩ ß ó«ßßΓá¡«ó½Ñ¡¿Ñ¼
  3. ¿ßσ«ñ¡δσ áñαÑß«ó */
  4.  
  5. /********************************************
  6. *        Restore Vector                     *
  7. *        Demo Vercion                       *
  8. *                                           *
  9. *      Make by M.Potanin.                   *
  10. *********************************************/
  11.  
  12. #include"ftrace.h"
  13.  
  14. #include<stdio.h>
  15. #include<stdlib.h>
  16. #include<process.h>
  17. #include<alloc.h>
  18.  
  19. void inittrace(funct t)
  20. {
  21.   topstack->CS_IP.point = t;
  22.   topstack[1].CS_IP.Words.cs = 0x1717;
  23.   topstack->flags = 0x100;
  24. }
  25.  
  26. void main()
  27. {
  28.  char test=0,good=1;
  29.  void far * fstack;
  30.  
  31.  puts("Restore Vector.\tDemo version\nMake by M.Potanin.");
  32.  
  33.  fstack=save_stat.stack.stack = (void far *) farmalloc(256);
  34.  setvect(1,ftrace);
  35.  
  36.  inittrace((funct)getvect(0x13));
  37.  
  38.  while(topstack->CS_IP.Words.cs > 0x300)
  39.  {
  40.   topb[4]|=1; /*set trace bit*/
  41.   if(test)
  42.   {
  43.    topb[6]&=0xFE; /*Clear immeg of trace bit*/
  44.    test = 0;
  45.   }
  46.   step();
  47.   if(*last_command == 0x9C)
  48.    test=1;
  49.   if(topstack->CS_IP.Words.cs == 0x1717)
  50.   {
  51.    puts("Can not restore 13 interrupt");
  52.    good = 0;
  53.    break;
  54.   }
  55.  }
  56.  if(good)
  57.   setvect(0x13,(interr)(topstack->CS_IP.point));
  58.  good = 1;
  59.  save_stat.stack.stack= fstack;
  60.  inittrace((funct)getvect(0x21));
  61.  
  62.  while(topstack->CS_IP.Words.cs > 0x300)
  63.  {
  64.   topb[4]|=1; /*set trace bit*/
  65.   if(test)
  66.   {
  67.    topb[6]&=0xFE; /*Clear immeg of trace bit*/
  68.    test = 0;
  69.   }
  70.   step();
  71.   if(*last_command == 0x9C)
  72.    test=1;
  73.   if(topstack->CS_IP.Words.cs == 0x1717)
  74.   {
  75.    puts("Can not restore 21 interrupt");
  76.    good = 0;
  77.    break;
  78.   }
  79.  }
  80.  if(good)
  81.   setvect(0x21,(interr)(topstack->CS_IP.point));
  82. }