首页
社区
课程
招聘
[原创]让winhex支持??模糊查找的通用补丁
发表于: 2016-4-27 13:24 4098

[原创]让winhex支持??模糊查找的通用补丁

2016-4-27 13:24
4098
离之前发布的“新版winhex18.2中文集成修改+爆破”已经将近一年,那时不知道挟持为何物。
其实现在对vc也是一窍不通,直接asm代码拼接。
虽然后来也写过一些补丁,但发现winhex的特征码居然变了好几次。
看看之前写的代码,发现很垃圾,所以重新写了匹配代码,支持所有32位的winhex,更加通用。



sspicli.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 112
活跃值: (1531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好奇问一下,这dll要113KB那么大?会包含木马吗?
2016-4-27 13:35
0
雪    币: 10664
活跃值: (3569)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
也许吧,只是不想让别人知道我的代码
2016-4-27 13:54
0
雪    币: 101
活跃值: (144)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
这东西确实不错的说
发个自己写的查找代码

//内存比较函数,支持模糊查找,为?时通配  size = sizeof(array)
	static INT XMemCmp(LPBYTE startAddr, UINT len, LPBYTE obj, UINT size)
	{
		MEMORY_BASIC_INFORMATION mbi;
		ZeroMemory(&mbi, sizeof(MEMORY_BASIC_INFORMATION));
		if (!VirtualQuery((LPCVOID)startAddr, &mbi, sizeof(MEMORY_BASIC_INFORMATION)))
		{
			return 0;
		}
		if (mbi.State != MEM_COMMIT)
		{
			return 0;
		}
		//if (mbi.Protect && PAGE_EXECUTE_READ
		if (size > len) return 0;

		for (UINT i = (UINT)startAddr; i < (UINT)startAddr + len; i++)
		{
			LPBYTE curPbt = (LPBYTE)i;

			for (UINT j = (UINT)obj; j < (UINT)obj + size; j++)
			{
				LPBYTE objPbt = (LPBYTE)j;
				if ((*curPbt == *objPbt) || (*objPbt == '?'))
				{
					++curPbt;
				}
				else
				{
					break;
				}

				if (j == (UINT)obj + size - 1) return i;
			}

		}
		return 0;

	}

2016-6-4 00:17
0
雪    币: 27
活跃值: (486)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Use as wildcard:[3F]选项打勾后,模糊查找的地方用3F代替就可,根本不用补丁
2016-6-6 11:59
0
雪    币: 10664
活跃值: (3569)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=haojunzhao;1432716]Use as wildcard:[3F]选项打勾后,模糊查找的地方用3F代替就可,根本不用补丁[/QUOTE]

你不觉得这样很麻烦?还有就是你这样是要去掉空格的.
2016-6-6 13:15
0
游客
登录 | 注册 方可回帖
返回
//