完成特征码查找工具,支持文件和进程两种方式

 支持下面三种方式的特征码搜索,显示地址:

 BOOL scanffileself( const   char   * pfilename,TAddressList & datalst);
  
// 搜索数据特征 所在位置
  int  ScanfSpec(CString sspec,INT istartaddr,INT iendaddr);
 
// 根据常量附近的特征码搜索常量数据,如 
 
// A1 B4 A9 91 00; mov eax,dword ptr [91A9B4] 要得到0091A9B4
  /*
0452b3C:   A1 B4A99100   ; mov eax,dword ptr [91A9B4]   ioffset=-8
0452b41:   6A 00         ; PUSH 0
0452b43:   6A 00         ; PUSH 0
0452b45:   8B50 1C       ; mov edx,dword ptr [eax+1C]   --sspec开始-- 
0452b48:   8B42 28       ; mov eax,dword ptr [edx+28]
0452b4B:   8B82 6C030000 ; mov eax,dword ptr [edx+036C] --sspec结束-- 
上述地址应该在istartaddr,iendaddr之间
 
*/

int  ScanfConstData(CString sspec,INT istartaddr,INT iendaddr,INT ioffset);
 
// 根据函数调用附近的特征码搜索调用函数,如 
 
// E8 F3 3E 10 00; call 0057BDD0 要得到0057BDD0
  /* 捡物地址
0477EC4:   8B97 10010000 ; mov edx,dword ptr [edi+110]   --sspec开始-- 
0477ECA:   8B46 20       ; mov eax,dword ptr [esi+20]
0477ECD:   52            ; push edx
0477ECE:   8B49 20       ; mov ecx,dword ptr [ecx+20]   --sspec结束--
0477ED1:   50            ; push eax
0477ED2:   81c1 D4000000 ; add ecx 0D4                  --sspec也可以在此结束-- 
0477ED8:   E8 F3 3E 10 00; call 0057BDD0 要得到0057BDD0=0477ED8+00013EF3+05  ioffset=21=d8+01-c4
上述地址应该在istartaddr,iendaddr之间
 
*/

int  ScanfCall_Func(CString sspec,INT istartaddr,INT iendaddr,INT ioffset);
 
// 根据函数内的地址搜索函数起始地址,如 
 
// 答题地址
  /*
0581550:   6A FF         ; push -1          --函数起始地址--  
0581552:   68 98308400   ; push  00843098
 ...
0581585:   8B4C24 30     ; mov ecx,dword ptr [esp+30] --sspec开始-- 
0581589:   8B5424 34     ; mov edx,dword ptr [esp+34] 
058158D:   8B86 3001 0000; mov eax,dword ptr [esi+130] --sspec结束--
0581593:   894c24 10     ; mov dword ptr[esp+10],ecx   --sspec也可以在此结束-- 
上述地址应该在istartaddr,iendaddr之间
 
*/

int  ScanfFuncStart(CString sspec,INT istartaddr,INT iendaddr,INT ioffset);

#宝宝
一级基址A1:abase=ScanfConstData("8B 50 1c 8b 42 28 8b 80 6c 03 00 00", 0x450000, 0x500000, -8)
小星星基址A3:abase=ScanfConstData("8D04D5 00000000 2BC2 F7D8 8D0C81", 0x450000, 0x500000, 28)
小星星基址_2A3:abase=ScanfConstData("8D04D5 00000000 2BC2 F7D8 8D0C81 A1 ???? ???? 2BC2", 0x450000, 0x500000, 28)
等级经验基址C5:gradbase=ScanfConstData("8B4424 04 DD04C5", 0x450000, 0x500000, 7)
等级经验基址00:gradbase2=ScanfFuncStart("00007940 00000000 00C08240 00000000 00B08D40 00000000 00889340",0x950000, 0x980000,-36)
发包地址1:sendcall=ScanfFuncStart("894424 18 895C24 1C 895C24 20",0x550000, 0x600000,-43)
发包地址2:dati2call=ScanfCall_Func("8B4424 08 8B4C24 0C 66C706 5600 8946 02 894E 06",0x540000, 0x600000,32)
支持如上脚本文件格式。

理论上可以找任何特征码。

界面如下:

支持上图信息存文件。 也支持地址多次搜索。

文件资源:

http://download.csdn.net/source/412122

完善名关于进程名的大小写处理。 后者对进程名忽略大小写进行比较。

http://download.csdn.net/source/415342

加了进度条

http://download.csdn.net/source/417341

增强版(用windows的sol.exe纸牌做例子,偷看牌),结合了游戏属性工具的功能。

http://download.csdn.net/source/2228703

工具应该对没有加壳的游戏是通用适用的。
进程内存不是一次读入的,是分块读入的。如图内存分布表。
大家搜索的时候,如果代码就找带X属性的。如果数据就找带W属性的。
如果只读数据就找带R属性的。这样会快一些。

特征码搜索,如game2spec.txt文件中,搜索只需要1-2秒,应该不算慢。
使用图示说明
地址搜索功能图示说明
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
文件特征提取是指从文件中提取出具有代表性的特征,通常用于文件分类、相似度比较、恶意软件检测等领域。常用的文件特征提取方法主要有以下几种: 1. 哈希值提取:将文件转换成哈希值,常用的哈希算法有MD5、SHA1等,哈希值可以作为文件的唯一标识符。 2. N-gram特征提取:将文件内容转换成N-gram序列,N-gram是指连续的N个字符或单词,可以用于文本分类、恶意软件检测等领域。 3. 图像特征提取:对于图像文件,可以使用局部特征描述符提取方法,如SIFT、SURF、ORB等,提取图像的局部特征。 4. 元数据提取:文件的元数据包括文件名、大小、创建时间、修改时间、作者、版本号等信息,这些信息可以作为文件特征。 下面是一个使用MD5哈希值提取文件特征的Python代示例: ```python import hashlib # 定义一个函数,用于计算文件的MD5哈希值 def get_file_md5(filename): with open(filename, 'rb') as f: md5_obj = hashlib.md5() while True: data = f.read(4096) if not data: break md5_obj.update(data) return md5_obj.hexdigest() # 调用函数,计算文件的哈希值 filename = 'example.txt' file_md5 = get_file_md5(filename) # 输出文件的哈希值 print(file_md5) ``` 在这个示例中,我们定义了一个`get_file_md5`函数,用于计算指定文件的MD5哈希值。然后,我们调用这个函数,传入要计算哈希值的文件名,获取文件的哈希值。最后,我们输出文件的哈希值。这个哈希值可以作为文件特征,用于文件的分类、相似度比较、恶意软件检测等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值