GetAdaptersAddresses是获取物理网卡的MAC,这里我们通过HOOK,随机的改变它,效果如下图,获取本节MAC可以采用精易模块的MAC_取本机MAC (1)
GetAdaptersAddresses
.版本 2 .DLL命令 GetAdaptersAddresses, 整数型, "iphlpapi", "GetAdaptersAddresses" .参数 Family .参数 Flags .参数 Reserved .参数 AdapterAddresses .参数 SizePointer, , 传址
hook
.版本 2 h.安装Hook (“iphlpapi.dll”, “GetAdaptersAddresses”, 到整数 (&macaddress)) h.开始Hook ()
macaddress回调
我们采用了取随机字母来改变物理网课的MAC
.版本 2 .支持库 spec .子程序 macaddress, 整数型 .参数 Family .参数 Flags .参数 Reserved .参数 AdapterAddresses, , 参考 .参数 SizePointer, , 参考, 数据大小 .局部变量 ret, 整数型 .局部变量 buf, 字节集 .局部变量 lodsiz, 整数型 .局部变量 IPAA, IP_ADAPTER_ADDRESSES .局部变量 s, 整数型 .局部变量 macdatee, 字节集 .局部变量 MAC_S, 文本型, , "6" h.停止Hook () lodsiz = SizePointer ret = GetAdaptersAddresses2 (Family, Flags, Reserved, AdapterAddresses, SizePointer) .如果真 (lodsiz ≠ 0) ' 在这里任意修改网卡信息。 拷贝内存_IP_ADAPTER (IPAA, 取变量数据地址 (AdapterAddresses), Len_IP_ADAPTER (IPAA)) 拷贝内存_IP_ADAPTER (lens, 取变量数据地址 (AdapterAddresses), Len_IP_ADAPTER (IPAA)) ' 复制一个新的网卡数据组 lens.pNext = 0 ' MAC_S = { “1C”, “B7”, “2C”, “DD”, “FF”, “B1” } MAC_S [1] = 随机数母2 () MAC_S [2] = 随机数母2 () MAC_S [3] = 随机数母2 () MAC_S [4] = 随机数母2 () MAC_S [5] = 随机数母2 () MAC_S [6] = 随机数母2 () .计次循环首 (6, s) IPAA.PhysicalAddress [s] = 进制_十六到十 (MAC_S [s]) ' 修改网卡1 的网卡mac .计次循环尾 () .计次循环首 (6, s) lens.PhysicalAddress [s] = 进制_十六到十 (MAC_S [s]) ' 修改网卡2 的网卡mac .计次循环尾 () 拷贝内存 (IPAA.pNext, lens, Len_IP_ADAPTER (IPAA)) ' 将之前拷贝出的新数据地址写入pNext 提供枚举获取 拷贝内存 (取变量数据地址 (AdapterAddresses), IPAA, Len_IP_ADAPTER (IPAA)) .如果真结束 h.开始Hook () 返回 (ret)
hook dll 源码
我们也可以写一个注入的DLL,采用了EIP注入和远程线程注入来演示,以下是源码:
.版本 2 .支持库 spec hook () _临时子程序 () ' 在初始化代码执行完毕后调用测试代码 返回 (0) ' 返回值被忽略。 .子程序 _临时子程序 ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。 .子程序 hook, , 公开 h.安装Hook (“iphlpapi.dll”, “GetAdaptersAddresses”, 到整数 (&macaddress)) h.开始Hook () .子程序 macaddress, 整数型 .参数 Family .参数 Flags .参数 Reserved .参数 AdapterAddresses, , 参考 .参数 SizePointer, , 参考 .局部变量 ret, 整数型 .局部变量 buf, 字节集 .局部变量 lodsiz, 整数型 .局部变量 IPAA, IP_ADAPTER_ADDRESSES .局部变量 s, 整数型 .局部变量 macdatee, 字节集 .局部变量 MAC_S, 文本型, , "6" h.停止Hook () lodsiz = SizePointer ret = GetAdaptersAddresses (Family, Flags, Reserved, AdapterAddresses, SizePointer) .如果真 (lodsiz ≠ 0) ' 在这里任意修改网卡信息。 拷贝内存_IP_ADAPTER (IPAA, 取变量数据地址 (AdapterAddresses), Len_IP_ADAPTER (IPAA)) 拷贝内存_IP_ADAPTER (lens, 取变量数据地址 (AdapterAddresses), Len_IP_ADAPTER (IPAA)) ' 复制一个新的网卡数据组 lens.pNext = 0 ' MAC_S = { “1C”, “B7”, “2C”, “DD”, “FF”, “B1” } MAC_S [1] = 随机字母数字 () MAC_S [2] = 随机字母数字 () MAC_S [3] = 随机字母数字 () MAC_S [4] = 随机字母数字 () MAC_S [5] = 随机字母数字 () MAC_S [6] = 随机字母数字 () .计次循环首 (6, s) IPAA.PhysicalAddress [s] = 进制_十六到十 (MAC_S [s]) ' 修改网卡1 的网卡mac .计次循环尾 () .计次循环首 (6, s) lens.PhysicalAddress [s] = 进制_十六到十 (MAC_S [s]) ' 修改网卡2 的网卡mac .计次循环尾 () 拷贝内存 (IPAA.pNext, lens, Len_IP_ADAPTER (IPAA)) ' 将之前拷贝出的新数据地址写入pNext 提供枚举获取 拷贝内存 (取变量数据地址 (AdapterAddresses), IPAA, Len_IP_ADAPTER (IPAA)) .如果真结束 h.开始Hook () 返回 (ret) .子程序 进制_十六到十, 长整数型, 公开, 将16进制文件转换到10进制数值(返回十进制数) .参数 文本, 文本型 .局部变量 i, 整数型 .局部变量 t, 文本型 .局部变量 结果, 长整数型 .局部变量 局_文本, 文本型 t = “0123456789ABCDEF” 局_文本 = 到大写 (文本) .计次循环首 (取文本长度 (文本), i) 结果 = 结果 × 16 + 寻找文本 (t, 取文本中间 (局_文本, i, 1), , 假) - 1 .计次循环尾 () 返回 (结果) .子程序 随机字母数字, 文本型 .局部变量 tmp, 字节型, , "2" .局部变量 i, 整数型 置随机数种子 () .计次循环首 (2, i) tmp [i] = 取代码 (取文本中间 (“0123456789ABCDEF”, 取随机数 (1, 16), 1), ) .判断开始 (取文本左边 (到文本 (tmp), 1) = “0”) tmp [i] = 取代码 (取文本中间 (“123456789ABCDEF”, 取随机数 (1, 15), 1), ) .默认 .判断结束 .计次循环尾 () 返回 (到文本 (tmp))
教程获取下载:
百度网盘链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA
提取码:加QQ群:521068947 群文件下载
资源教程交流①群:521068947
511遇见QQ: 272586593