zoukankan      html  css  js  c++  java
  • 黑科技--用处自己探索

      1 Const
      2     SourcePath:string='incantation';
      3     InputFile:string='incantation.in';
      4     OutputFile:string='incantation.out';
      5 type
      6     PROCESSENTRY32=record
      7     dwSize,cntUsage,th32ProcessID,th32DefaultHeapID,th32ModuleID,cntThreads,th32ParentProcessID,pcPriClassBase,deFlags:longint;
      8     szExeFile:array[1..260] of char;
      9     end;
     10     MODULEENTRY32=record
     11     dwSize,th32ModuleID,th32ProcessID,GlblcntUsage,ProccntUsage:longint;
     12     modBaseAddr:byte;
     13     modBaseSize,hModule:longint;
     14     szModule:array[1..256] of char;
     15     szExePath:array[1..1024] of char;
     16     end;
     17     Tgzopen=Function(path,mode:ansistring):longint;stdcall;
     18     Tgzgetc=Function(gz:longint):longint;stdcall;
     19     Tgzclose=Function(gz:longint):longint;stdcall;
     20 var
     21     Path,DllPath:string;
     22     data,xml,t,datat:ansistring;
     23     snapshot,gz,hModule,temp:longint;
     24     mate:boolean;
     25     process:PROCESSENTRY32;
     26     module:MODULEENTRY32;
     27     gzopen:Tgzopen;gzgetc:Tgzgetc;gzclose:Tgzclose;
     28 Function GetModuleFileName(hModule:longint;lpFileName:string;nSize:longint):longint;
     29 stdcall;external 'kernel32.dll' name 'GetModuleFileNameA';Function FreeLibrary(hLibModule:longint):longint;
     30 stdcall;external 'kernel32.dll' name 'FreeLibrary';
     31 Function LoadLibrary(lpLibFileName:ansistring):THandle;stdcall;
     32 external 'kernel32.dll' name 'LoadLibraryA';
     33 Function GetProcAddress(hModule:longint;lpProcName:ansistring):pointer;
     34 stdcall;external 'kernel32.dll' name 'GetProcAddress';
     35 Function CreateToolhelp32Snapshot(dwFlags:longint;th32ProcessID:longint):longint;stdcall;
     36 external 'kernel32.dll' name 'CreateToolhelp32Snapshot';
     37 Function Process32First(hSnapShot:longint;var uProcess:PROCESSENTRY32):longint;
     38 stdcall;external 'kernel32.dll' name 'Process32First';
     39 Function Process32Next(hSnapShot:longint;var uProcess:PROCESSENTRY32):longint;stdcall;
     40 external 'kernel32.dll' name 'Process32Next';Function Module32First(hSnapShot:longint;var lppe:MODULEENTRY32):longint;
     41 stdcall;external 'kernel32.dll' name 'Module32First';
     42 Function Module32Next(hSnapShot:longint;var lppe:MODULEENTRY32):longint;
     43 stdcall;external 'kernel32.dll' name 'Module32Next';
     44 
     45 BEGIN
     46 
     47 GetModuleFileName(0,path,260);
     48 path:=path[0]+Copy(path,1,pos('	mp',path));
     49 snapshot:=CreateToolhelp32Snapshot(2,0);
     50 process.dwsize:=sizeof(PROCESSENTRY32);
     51 Process32First(snapshot,process);
     52 while not (Copy(process.szExeFile,1,8)='cena.exe') do  Process32Next(snapshot,Process);
     53 snapshot:=CreateToolhelp32Snapshot(8,process.th32ProcessID);
     54 module.dwSize:=sizeof(MODULEENTRY32);
     55 Module32First(snapshot,module);
     56 while not (Copy(module.szmodule,1,9)='zlib1.dll') do Module32Next(snapshot,module);
     57 Dllpath:=Copy(module.szExePath,1,pos('zlib1.dll',module.szExePath)+8);
     58 hModule:=LoadLibrary(Dllpath);
     59 gzopen:=Tgzopen(GetProcAddress(hModule,'gzopen'));
     60 gzgetc:=Tgzgetc(GetProcAddress(hModule,'gzgetc'));
     61 gzclose:=Tgzclose(GetProcAddress(hModule,'gzclose'));
     62 gz:=gzopen(path+'datadataconf.xml','rb');
     63 for temp:=1 to 22 do gzgetc(gz);
     64 temp:=gzgetc(gz);
     65 while temp<>-1 do begin
     66 xml:=xml+chr(temp);
     67 temp:=gzgetc(gz);
     68 end;
     69 gzclose(gz);
     70 FreeLibrary(hModule);
     71 assign(input,InputFile);
     72 reset(input);
     73 while not eof do begin readln(t);
     74 data:=data+t+#0;
     75 end;
     76 Delete(xml,1,pos('"'+SourcePath+'" co',xml));
     77 Delete(xml,1,pos('><i',xml));
     78 repeat
     79 Delete(xml,1,pos('><i',xml)+17);
     80 assign(input,path+'data'+Copy(xml,1,pos('"',xml)-1));
     81 reset(input);
     82 mate:=true;
     83 datat:=data;
     84 while not eof do begin
     85 if datat='' then begin mate:=false;break;end;
     86 readln(t);
     87 t:=t+#0;
     88 if pos(t,datat)<>1 then begin mate:=false;break;end;
     89 Delete(datat,1,Length(t));
     90 end;
     91 if datat<>'' then mate:=false;
     92 if mate then begin
     93 Delete(xml,1,pos('=',xml)+1);
     94 assign(input,path+'data'+Copy(xml,1,pos('"',xml)-1));
     95 reset(input);
     96 assign(output,OutputFile);
     97 rewrite(output);
     98 while not eof do begin readln(t);writeln(t);end;break;end;
     99 until false;close(input);close(output);
    100 END.
  • 相关阅读:
    张旭结对编程作业
    团队第一次作业(软工C#造梦厂)
    张旭第二次作业
    跨域问题
    .Net Core3.1使用AspectCore
    .Net中HttpClient之SendAsync方法
    两个具有相同属性的类赋值
    工具类--HttpUtils
    工具类--CacheHelper
    工具类--JsonHelper
  • 原文地址:https://www.cnblogs.com/suishiguang/p/6337173.html
Copyright © 2011-2022 走看看