|
|
发表于 2026-1-14 10:44:49
|
显示全部楼层
湖北省黄石市
结合 进程内存特征码搜索 改编,
|
| 搜索进程内存指针汇编x32 | 整数型 | | |
| 进程ID | 整数型 | | | | 最小目标地址 | 整数型 | | | | 最大目标地址 | 整数型 | | | | 结果数组 | 整数型 | | | | 打印区段属性 | 逻辑型 | | | | 当前属性 | 整数型 | | | | 初始属性 | 整数型 | | | | 最大区域长度 | 整数型 | | | | 页类型 | 整数型 | | | | 起始地址 | 长整数型 | | | | 结束地址 | 长整数型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | Memory | MEMORY_BASIC_INFORMATION | | | | Fuzzy_Code | 字节集 | | | | Backup_Signature | 文本型 | | | | l_Signature | 字节集 | | | | Data_Buffer | 字节集 | | | | Addr_Current | 长整数型 | | | | Addr_Next | 长整数型 | | | | Sec_Size | 整数型 | | | | Temp | 整数型 | | | | Num | 整数型 | | | | 局进程句柄 | 整数型 | | | | My_Sec_Size | 整数型 | | | | 临时结果 | 整数型 | | 50000 | | 当前地址 | 整数型 | | | | k | 整数型 | | | 清除数组 (结果数组 )局进程句柄 = 打开进程 (进程ID ) 如果真 (起始地址 ≤ 0 ) 起始地址 = 十六到十 (“000000000000”) 如果真 (结束地址 ≤ 0 ) 结束地址 = 十六到十 (“0000FFFF0000”)Addr_Next = 起始地址 判断循环首 (VirtualQueryEx (局进程句柄, Addr_Next, Memory, 28 ) ≠ 0 且 Addr_Next < 结束地址 ) Addr_Current = Memory.BaseAddress  Addr_Next = Addr_Current + Memory.RegionSize  如果真 (Memory.Protect = 0 或 b_Get (Memory.Protect, 1 ) 或 b_Get (Memory.Protect, 256 ) 或 b_Get (Memory.Protect, 512 ) 或 b_Get (Memory.Protect, 1024 ))  到循环尾 ()   如果真 (是否为空 (页类型 ) = 假)  如果真 (Memory.Type ≠ 页类型 )  到循环尾 ()  如果真 (页类型 = 131072 )   如果真 (Memory.RegionSize ≤ 32768 )   到循环尾 ()        如果真 (是否为空 (最大区域长度 ) = 假)  如果真 (Memory.RegionSize > 最大区域长度 )  到循环尾 ()      如果真 (是否为空 (当前属性 ) = 假)  如果真 (内部_属性过滤 (Memory.Protect, 当前属性 ))   到循环尾 ()      如果真 (是否为空 (初始属性 ) = 假)  如果真 (内部_属性过滤 (Memory.AllocationProtect, 初始属性 ))   到循环尾 ()   Sec_Size = Memory.RegionSize Data_Buffer = 取空白字节集 (Sec_Size + 1 ) ReadProcessMemory_字节集 (局进程句柄, Addr_Current, Data_Buffer, Sec_Size, My_Sec_Size ) 如果 (My_Sec_Size = Sec_Size )  Num = Asm_加速扫描 (PtrBin (Data_Buffer ), Memory.RegionSize, 最小目标地址, 最大目标地址, PtrArray (临时结果 ), 50000 )   如果真 (Num > 50000 )   Num = 50000   如果真 (Num > 0 )   计次循环首 (Num, k )    当前地址 = Addr_Current + 临时结果 [k ] - PtrBin (Data_Buffer )   加入成员 (结果数组, 当前地址 )   计次循环尾 () Num = 取数组成员数 (结果数组)  Temp = Num - Temp   如果真 (打印区段属性 且 Temp > 0 )  输出调试文本 (“分配地址 ” + 十到十六 (Memory.AllocationBase ) + “丨” + “jz ” + 十到十六 (Memory.BaseAddress ) + “丨” + “区域长度 ” + 十到十六 (Memory.RegionSize ) + “丨” + “当前属性 ” + 内存_分析区段属性 (Memory.Protect ) + 到文本 (Memory.Protect ) + “丨” + “初始属性 ” + 内存_分析区段属性 (Memory.AllocationProtect ) + 到文本 (Memory.AllocationProtect ) + “丨” + “页类型 ” + 到文本 (Memory.Type ) + “丨” + “Num ” + 到文本 (Temp ))  Temp = Num     处理事件 () 判断循环尾 ()关闭句柄 (局进程句柄 )返回 (取数组成员数 (结果数组 ))
|
|