关于判断文件唯一性,怎么提取特征码(100分)

  • 主题发起人 主题发起人 foranyone
  • 开始时间 开始时间
F

foranyone

Unregistered / Unconfirmed
GUEST, unregistred user!
困惑,用什么来判断文件的唯一性,用findwindow判断程序,误报可能太大,有哪位大大能提供delphi的判断文件的特征码的好例子,麻烦写出来,指点一二。分不多,因为不会的东西太多了,留着以后学习。<br>----------------------------------------------------------------------<br> ccrun(老妖)(www.ccrun.com) ( ) 信誉:100 &nbsp; &nbsp;Blog &nbsp;2006-11-8 13:38:41 &nbsp;得分: 0 &nbsp;<br>判断文件唯一性还是窗口唯一性,findwindow是查找窗口用的。<br><br> foranyone() ( ) 信誉:100 &nbsp; &nbsp;Blog &nbsp;2006-11-8 14:53:13 &nbsp;得分: 0 &nbsp;<br> &nbsp;<br>是判断文件的唯一性,以前都是用findwindow()查出运行着的文件名,然后根据这个判断文件是否存在,但同类或是同名窗口的程序太多,容易误查,就是这个意思,不知道你老鸟们能不能听的懂。<br><br> zhxfzhxf1(zhxfzhxf1) ( ) 信誉:105 &nbsp; &nbsp;Blog &nbsp;2006-11-8 14:54:59 &nbsp;得分: 0 &nbsp;<br> &nbsp;<br>如果事先知道 文件的大小,就可以利用这一点<br><br> foranyone() ( ) 信誉:100 &nbsp; &nbsp;Blog &nbsp;2006-11-8 15:01:38 &nbsp;得分: 0 &nbsp;<br> <br>主要是想查殺他,知道大小沒什麼用處,如果對方加殼或是做了數據壓縮,那麼知道大小就沒什麼作用了。<br><br> brucely() ( ) 信誉:93 &nbsp; &nbsp;Blog &nbsp;2006-11-8 15:17:41 &nbsp;得分: 0 &nbsp;<br><br>读取文件的md5特征码试试<br><br> foranyone() ( ) 信誉:100 &nbsp; &nbsp;Blog &nbsp;2006-11-8 15:51:28 &nbsp;得分: 0 &nbsp;<br> <br>是想查殺一個程序,MD5碼好象不行,MD5碼是保證文件的正確性,说明是你发布的原創,沒被別人修改過。<br><br> happyggy(Delphi&lt;-&&-&gt;java) ( ) 信誉:100 &nbsp; &nbsp;Blog &nbsp;2006-11-8 16:11:20 &nbsp;得分: 0 &nbsp;<br> &nbsp;<br>什么是特征码<br>程序运行时,在内存中为完成特定的动作,要有特殊的指令,<br>一个程序在运行时,同一内存地址的指令是相同的<br>同一个程序中,一段连续的地址(它的指令相同),截取这段地址 这就是特征码<br><br>特征码怎么提取<br>对程序进行脱壳 反汇编 提取一段连续的地址(它的指令相同)即可<br><br>因为楼主所以知道了什么事特征码<br><br> foranyone() ( ) 信誉:100 &nbsp; &nbsp;Blog &nbsp;2006-11-8 16:41:57 &nbsp;得分: 0 &nbsp;<br><br>有具体的例子吗?我对汇编不是太了解。最好不要是汇编的
 
顶顶,高手快出来帮帮
 
用进程行不
 
基本不知所云...<br>如果你是想查某个特定名称的程序是否在运行,可以用下面的方法,没有误判:<br>uses TLHelp32;<br>//ProcessName: 程序或进程名;返回值: 程序是否运行。<br>function ProcessRun(const ProcessName: string): Boolean;<br>var<br> &nbsp;hsp, hsm: LongWord;<br> &nbsp;lppe: TProcessEntry32;<br> &nbsp;lpme: TModuleEntry32;<br>begin<br> &nbsp;hsp := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);<br> &nbsp;lppe.dwSize := SizeOf(TProcessEntry32);<br> &nbsp;lpme.dwSize := SizeOf(TModuleEntry32);<br> &nbsp;Result := Process32First(hsp, lppe);<br> &nbsp;while Result do<br> &nbsp;begin<br> &nbsp; &nbsp;hsm := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, lppe.th32ProcessID);<br> &nbsp; &nbsp;Result := Module32First(hsm, lpme);<br> &nbsp; &nbsp;while Result do<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;if ExtractFileName(lpme.szExePath) &lt;&gt; ProcessName then<br> &nbsp; &nbsp; &nbsp; &nbsp;Result := Module32Next(hsm, lpme)<br> &nbsp; &nbsp; &nbsp;else Break;<br> &nbsp; &nbsp;end;<br> &nbsp; &nbsp;CloseHandle(hsm);<br> &nbsp; &nbsp;if not Result then<br> &nbsp; &nbsp; &nbsp;Result := Process32Next(hsp, lppe)<br> &nbsp; &nbsp;else Break;<br> &nbsp;end;<br> &nbsp;CloseHandle(hsp);<br>end;
 
列举运行的所有程序和将要运行的程序,然后根据已知程序的特征(类似于病毒库之类)查找指定的文件是否在运行,如果存在,进行查杀。楼上的结果不是我想要,谢谢楼上的,表示感谢。结贴的时候会贴出相应的分数给你表示感谢。
 
后退
顶部