1、检测主程序大小,防止破解补丁之类: 
 Function TForm1.GesSelfSf: integer; 
 var 
 F: file of byte; 
 begin 
   Filemode:=0; 
   Assignfile(F,’./FileName.exe’); 
   Reset(f); 
   Result:=Filesize(F); 
   Closefile(F); 
 end; 
 [拆招]: 
 其实就是自效验,这类型的破文太多了,偶就不献丑了~ 
 [原文]: 
 2、检测创建日期和时间,让破解补丁实效: 
 Function TForm1.FinDate:String; 
 var 
 t:TDate; 
 begin 
   ShortDateFormat:=’yyyy-mm-dd’; 
    
 t:=FileDateToDateTime(FileAge(‘FileName.exe’)); 
    
 Result:=DateToStr(t); 
 end; 
 [拆招]: 
 可以根据api函数下断,在NOP掉关键代码. 
 最简单的办法,修改创建时间就行了,软件多的是~ 
 [原文]: 
 3、注册码加密函数嵌入数学函数,增加破解难度: 
 (略) 
 [拆招]: 
 随机应变,见招拆招~ 
 [原文]: 
 4、必要时自己删除自己(主程序): 
 procedure TForm1.Funll; 
 var 
 hModule:THandle; 
 buff:array[0..255]of 
 Char; 
 hKernel32:THandle; 
 pExitProcess,pDeleteFileA,pUnmapViewOfFile:Pointer; 
 begin 
   hModule:=GetModuleHandle(nil); 
    
 GetModuleFileName(hModule, buff, sizeof(buff)); 
    
 CloseHandle(THandle(4)); 
    
 hKernel32:=GetModuleHandle(‘KERNEL32’); 
    
 pExitProcess:=GetProcAddress(hKernel32, ‘ExitProcess’); 
    
 pDeleteFileA:=GetProcAddress(hKernel32, ‘DeleteFileA’); 
    
 pUnmapViewOfFile:=GetProcAddress(hKernel32, ‘UnmapViewOfFile’); 
    
 asm 
   LEA EAX, buff 
   PUSH 0 
   PUSH 
 0 
   PUSH EAX 
   PUSH pExitProcess 
    
 PUSH hModule 
   PUSH pDeleteFileA 
   PUSH 
 pUnmapViewOfFile 
   RET 
   end; 
    
 begin 
   Funll; 
   end; 
 end; 
 具体怎么使用,那要看你自己的意愿了和需要了。反正俺是这样做的,俺的软件ADSL拨 计时器只在很早版本上出过注册机,后来的v3.70出过破解补丁——其实只是破掉了启动时提示注册的对话框,实质上根本没破解。用了上述的着法以后,到现在的v5.28版本,再没有过什么破解补丁或注册机。(完) 
 [拆招]: 
 要删文件,必须调用GetModuleHandleA和GetModuleFileNameA,用bp下断,找到附近的DeleteFileA,nop掉就可以了。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!