wxid加好友工具插件,代码转换器,可在安卓手机操作,我这边已开源!

发布时间 2023-11-20 10:37:22作者: 花花java大师

网上这个工具卖的挺厉害的,那么我今天就分享出来,然后在给大家演示一下,免得大家以为我分享的工具是唬人的,我提前说明一下我这边开源的工具都是确保能用的,我测试好了才会分享出来,用不了的也不会开源,然后它可以通过WXID直接加对方为好友,不需要小程序查的,可以批量添加哈,这款工具需要一个“etcp_ultimate.ec”模块和“WeChatHook.dll”组件即可实现,下面我都会分享出来。

UI界面:

 

 

我测试一下哈现在是2023年11月20号,然后下面是一个没有设置了微信号的账号,就是只有WXID。【仅供教程演示】

 

 

然后通过工具添加后,可以直接到对方的主页上面,能实现添加好友的效果,如下图所示。

 

 

dll分享:

=============================================================

.版本 2

.程序集 ByteBuffer

.程序集变量 data, 字节集

.程序集变量 pdata, 整数型

.程序集变量 size, 整数型

.程序集变量 position, 整数型

.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用

.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用

data = { }

pdata = 0

size = 0

position = 0

.子程序 GetBuffer, 字节集, 公开

.如果真 (position < size)

返回 (_readBytes (pdata, position))

.如果真结束

返回 (data)

.子程序 CreateBuffer, , 公开

.参数 len, 整数型

data = 取空白字节集 (len)

pdata = GetBinAddr (data)

size = len

.子程序 ByteBuffer, , 公开

.参数 bin, 字节集

data = bin

pdata = GetBinAddr (data)

size = 取字节集长度 (data)

.子程序 GetByte, 字节型, 公开

.局部变量 ret, 字节型

ret = _readByte (_add (pdata, position))

position = _add (position, 1)

返回 (ret)

.子程序 GetShort, 整数型, 公开

.局部变量 ret, 整数型

ret = _readWord (_add (pdata, position))

position = _add (position, 2)

返回 (ret)

.子程序 GetInt, 整数型, 公开

.局部变量 ret, 整数型

ret = _readDword (_add (pdata, position))

position = _add (position, 4)

返回 (ret)

.子程序 GetBin, 字节集, 公开

.参数 len, 整数型

.局部变量 ret, 字节集

.如果真 (len = 0)

返回 ({ })

.如果真结束

ret = _readBytes (_add (pdata, position), len)

position = _add (position, len)

返回 (ret)

.子程序 GetToken, 字节集, 公开

返回 (GetBin (GetShort ()))

.子程序 SetInt, , 公开

.参数 val, 整数型

_writeDword (_add (pdata, position), val)

position = _add (position, 4)

.子程序 SetShort, , 公开

.参数 val, 短整数型

_writeWord (_add (pdata, position), val)

position = _add (position, 2)

.子程序 SetByte, , 公开

.参数 val, 字节型

_writeByte (_add (pdata, position), val)

position = _add (position, 1)

.子程序 SetBin, , 公开

.参数 val, 字节集

_writeBytes (_add (pdata, position), val)

position = _add (position, 取字节集长度 (val))

.子程序 SetToken, , 公开

.参数 val, 字节集

.局部变量 len, 整数型

len = 取字节集长度 (val)

SetShort (len)

.如果真 (len ≠ 0)

_writeBytes (_add (pdata, position), val)

position = _add (position, 取字节集长度 (val))

.如果真结束

========================================================

help:

========================================================

.版本 2

.程序集 help

.子程序 CopyMemory

.参数 内存地址, 整数型

.参数 数据源, 整数型

.参数 长度, 整数型

置入代码 ({ 81, 87, 86, 139, 77, 16, 139, 125, 8, 139, 117, 12, 243, 164, 94, 95, 89 })

.子程序 _readByte, 字节型

.参数 地址, 整数型

置入代码 ({ 139, 69, 8, 15, 182, 0, 93, 194, 4, 0 })

返回 (0)

.子程序 _readBytes, 字节集

.参数 地址, 整数型

.参数 长度, 整数型

.局部变量 字节集, 字节集

字节集 = 取空白字节集 (长度)

CopyMemory (GetBinAddr (字节集), 地址, 长度)

返回 (字节集)

.子程序 _readWord, 短整数型

.参数 地址, 整数型

置入代码 ({ 139, 69, 8, 15, 183, 0, 93, 194, 4, 0 })

返回 (0)

.子程序 _readDword, 整数型

.参数 地址, 整数型

置入代码 ({ 139, 69, 8, 139, 0, 93, 194, 4, 0 })

返回 (0)

.子程序 _writeDword

.参数 内存地址, 整数型

.参数 值, 整数型

置入代码 ({ 81, 139, 77, 12, 139, 69, 8, 137, 8, 89, 93, 194, 8, 0 })

.子程序 _writeWord

.参数 地址, 整数型

.参数 值, 短整数型

置入代码 ({ 81, 102, 139, 69, 12, 139, 77, 8, 102, 137, 1, 89, 93, 194, 8, 0 })

.子程序 _writeByte

.参数 地址, 整数型

.参数 值, 字节型

置入代码 ({ 81, 138, 69, 12, 139, 77, 8, 136, 1, 89, 93, 194, 8, 0 })

.子程序 _writeBytes

.参数 地址, 整数型

.参数 内容, 字节集

CopyMemory (地址, GetBinAddr (内容), 取字节集长度 (内容))

.子程序 _add, 整数型

.参数 数值1, 整数型

.参数 数值2, 整数型

置入代码 ({ 139, 69, 8, 3, 69, 12, 93, 194, 8, 0 })

返回 (0)

.子程序 _add2, 整数型

.参数 数值1, 整数型

.参数 数值2, 整数型

.参数 数值3, 整数型

置入代码 ({ 139, 69, 8, 3, 69, 12, 3, 69, 16, 93, 194, 12, 0 })

返回 (0)

.子程序 _imul, 整数型

.参数 数值1, 整数型

.参数 数值2, 整数型

置入代码 ({ 81, 139, 69, 8, 139, 77, 12, 15, 175, 193, 89, 93, 194, 8, 0 })

返回 (0)

.子程序 GetBinAddr, 整数型

.参数 字节集变量, 字节集, 参考

置入代码 ({ 139, 69, 8, 139, 0, 131, 248, 0, 116, 3, 131, 192, 8, 201, 194, 4, 0 })

返回 (0)

.子程序 GetStrAddr, 整数型

.参数 StringA, 文本型

置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 })

返回 (0)

.子程序 injectDll

.参数 hProcess, 整数型

.参数 hThread, 整数型

.参数 dll, 文本型

.局部变量 CONTEXT, CONTEXT

.局部变量 tmp, 整数型

.局部变量 addr, 整数型

.局部变量 Code, 字节集

tmp = VirtualAllocEx (hProcess, 0, 1024, 4096, 64)

CONTEXT.ContextFlags = 65543

ZwGetContextThread (hThread, CONTEXT)

addr = CONTEXT.Eip

CONTEXT.Eip = tmp

Code = { 96, 232, 0, 0, 0, 0, 88, 131, 192, 19, 80, 184 } + 到字节集 (_取函数入口 (“kernel32.dll”, “LoadLibraryA”)) + { 255, 208, 97 } + { 104 } + 到字节集 (addr) + { 195 } + 到字节集 (dll)

WriteProcessMemory_Bin (hProcess, tmp, Code, 取字节集长度 (Code), 0)

ZwSetContextThread (hThread, CONTEXT)

.子程序 取子程序真实地址, 整数型, , 支持任何参数

.参数 子程序指针, 子程序指针

置入代码 ({ 83, 81, 139, 69, 8, 64, 139, 8, 128, 249, 232, 117, 248, 139, 72, 1, 141, 92, 8, 5, 139, 11, 193, 225, 8, 129, 249, 0, 85, 139, 236, 141, 64, 4, 117, 225, 139, 195, 89, 91, 201, 194, 4, 0 })

返回 (0)

.子程序 取文本中间内容, 文本型

.参数 欲取全文本, 文本型

.参数 前面文本, 文本型

.参数 后面文本, 文本型

.参数 起始搜寻位置, 整数型, 可空

.参数 是否区分大小写, 逻辑型, 可空

.局部变量 局_位置, 整数型

.局部变量 局_位置1, 整数型

.局部变量 局_前面文本, 文本型

.局部变量 局_后面文本, 文本型

局_前面文本 = 子文本替换 (前面文本, “#引号”, #引号, , , 真)

局_后面文本 = 子文本替换 (后面文本, “#引号”, #引号, , , 真)

是否区分大小写 = 取反 (是否区分大小写)

局_位置 = 寻找文本 (欲取全文本, 局_前面文本, 起始搜寻位置, 是否区分大小写)

.如果真 (局_位置 ≠ -1)

局_位置 = 局_位置 + 取文本长度 (局_前面文本)

.如果真结束

局_位置1 = 寻找文本 (欲取全文本, 局_后面文本, 局_位置, 是否区分大小写)

.如果真 (局_位置 = -1 或 局_位置1 = -1)

返回 (“”)

.如果真结束

返回 (取文本中间 (欲取全文本, 局_位置, 局_位置1 - 局_位置))

.子程序 _取函数入口, 整数型

.参数 动态链接库路径, 文本型, , 库名 例:user32.dll

.参数 欲截获的函数名, 文本型, , 函数名 例:GetWindow

.局部变量 hLibModule, 整数型

hLibModule = GetModuleHandle (动态链接库路径)

.如果真 (hLibModule = 0)

返回 (0)

.如果真结束

返回 (Ams_GetProcAddress (hLibModule, 欲截获的函数名))

.子程序 Ams_GetProcAddress, 整数型, , 为什么用asm呢? 万恶的apphelp.dll

.参数 模块句柄, 整数型

.参数 函数名称, 文本型

置入代码 ({ 139, 93, 8, 131, 251, 0, 116, 58, 139, 67, 60, 3, 195, 139, 80, 120, 3, 211, 139, 74, 24, 139, 66, 32, 81, 81, 80, 51, 192, 131, 201, 255, 139, 125, 12, 139, 63, 242, 174, 247, 209, 88, 81, 139, 125, 12, 139, 63, 139, 52, 24, 3, 243, 243, 166, 89, 116, 14, 131, 192, 4, 94, 78, 86, 117, 232, 51, 192, 201, 194, 8, 0, 94, 89, 43, 206, 139, 66, 36, 141, 4, 72, 15, 183, 4, 24, 139, 74, 28, 141, 4, 129, 139, 4, 24, 3, 195, 201, 194, 8, 0 })

返回 (0)

' 01001102 8B5D 08 mov ebx,dword ptr ss:[ebp+0x8]

' 01001105 83FB 00 cmp ebx,0x0

' 01001108 74 3D je Xaa.01001147

' 0100110A 8B43 3C mov eax,dword ptr ds:[ebx+0x3C]

' 0100110D 03C3 add eax,ebx

' 0100110F 8B50 78 mov edx,dword ptr ds:[eax+0x78]

' 01001112 03D3 add edx,ebx

' 01001114 8B4A 14 mov ecx,dword ptr ds:[edx+0x14]

' 01001117 8B42 20 mov eax,dword ptr ds:[edx+0x20]

' 0100111A 51 push ecx

' 0100111B 51 push ecx

' 0100111C 50 push eax

' 0100111D 33C0 xor eax,eax

' 0100111F 83C9 FF or ecx,0xFFFFFFFF

' 01001122 8B7D 0C mov edi,dword ptr ss:[ebp+0xC]

' 01001125 8B3F mov edi,dword ptr ds:[edi]

' 01001127 F2:AE repne scas byte ptr es:[edi]

' 01001129 F7D1 not ecx

' 0100112B 58 pop eax

' 0100112C 51 push ecx

' 0100112D 8B7D 0C mov edi,dword ptr ss:[ebp+0xC]

' 01001130 8B3F mov edi,dword ptr ds:[edi]

' 01001132 8B3418 mov esi,dword ptr ds:[eax+ebx]

' 01001135 03F3 add esi,ebx

' 01001137 F3:A6 repe cmps byte ptr es:[edi],byte ptr ds:[esi]

' 01001139 59 pop ecx

' 0100113A 74 0E je Xaa.0100114A

' 0100113C 83C0 04 add eax,0x4

' 0100113F 5E pop esi

' 01001140 4E dec esi

' 01001141 56 push esi

' 01001142 ^ 75 E8 jnz Xaa.0100112C

' 01001144 33C0 xor eax,eax

' 01001146 C9 leave

' 01001147 C2 0800 retn 0x8

' 0100114A 5E pop esi

' 0100114B 59 pop ecx

' 0100114C 2BCE sub ecx,esi

' 0100114E 8B42 24 mov eax,dword ptr ds:[edx+0x24]

' 01001151 8D0448 lea eax,dword ptr ds:[eax+ecx*2]

' 01001154 0FB70418 movzx eax,word ptr ds:[eax+ebx]

' 01001158 8B4A 1C mov ecx,dword ptr ds:[edx+0x1C]

' 0100115B 8D0481 lea eax,dword ptr ds:[ecx+eax*4]

' 0100115E 8B0418 mov eax,dword ptr ds:[eax+ebx]

' 01001161 03C3 add eax,ebx

' 01001163 C9 leave

' 01001164 C2 0800 retn 0x8

.子程序 UnicodeToAnsi, 文本型

.参数 宽文本字节集, 字节集, , Unicode

.局部变量 临时文本, 字节集

.局部变量 窄文本长, 整数型, , , 单位: Word

.局部变量 宽文本长, 整数型

宽文本长 = 取字节集长度 (宽文本字节集) ÷ 2

窄文本长 = WideCharToMultiByte (936, 0, 宽文本字节集, 宽文本长, 临时文本, 0, “”, 0)

临时文本 = 取空白字节集 (窄文本长)

WideCharToMultiByte (936, 0, 宽文本字节集, 宽文本长, 临时文本, 窄文本长, “”, 0)

临时文本 = 子字节集替换 (临时文本, { 0 }, { }, , )

返回 (到文本 (临时文本))

.子程序 AnsiToUnicode, 字节集

.参数 窄文本, 文本型, , Ansi文本

.局部变量 数据2, 字节集

.局部变量 长度, 整数型

.如果真 (窄文本 = “”)

返回 ({ 0, 0 })

.如果真结束

长度 = MultiByteToWideChar (0, 0, 窄文本, _add (取文本长度 (窄文本), 1), 数据2, 0)

数据2 = 取空白字节集 (_imul (长度, 2))

MultiByteToWideChar (0, 0, 窄文本, _add (取文本长度 (窄文本), 1), 数据2, _imul (长度, 2))

返回 (数据2)

.子程序 公共_RC4

.参数 待加密数据, 字节集

.参数 返回数据, 字节集

.参数 密码字节集, 字节集

.局部变量 S, 字节型, , "256"

.局部变量 K, 字节型, , "256"

.局部变量 i, 整数型

S [1] = 0

K [1] = 0

置入代码 ({ 139, 69, 252, 131, 192, 8, 185, 0, 1, 0, 0, 51, 219, 42, 217, 136, 28, 3, 226, 247, 80, 139, 85, 16, 139, 18, 139, 122, 4, 131, 194, 8, 139, 117, 248, 131, 198, 8, 185, 0, 1, 0, 0, 51, 219, 59, 223, 114, 2, 51, 219, 138, 36, 19, 136, 38, 70, 67, 226, 241, 95, 51, 219, 129, 238, 0, 1, 0, 0, 51, 192, 185, 0, 1, 0, 0, 138, 20, 48, 2, 218, 138, 20, 56, 2, 218, 138, 20, 56, 138, 52, 59, 136, 52, 56, 136, 20, 59, 64, 226, 231, 139, 117, 8, 139, 54, 139, 78, 4, 137, 77, 244, 131, 198, 8 })

返回数据 = 取空白字节集 (i)

置入代码 ({ 139, 77, 244, 139, 85, 12, 139, 18, 131, 194, 8, 51, 192, 51, 219, 81, 15, 182, 200, 254, 193, 82, 138, 52, 57, 2, 222, 138, 20, 59, 136, 20, 57, 136, 52, 59, 2, 214, 15, 182, 210, 138, 20, 58, 138, 12, 48, 50, 202, 90, 136, 12, 16, 64, 89, 226, 214 })

============================================================

程序集代码:

============================================================

.版本 2

.数据类型 MyData

.成员 Name, 文本型

.成员 User, 文本型

.成员 Wxid, 文本型

.成员 Phone, 文本型

.数据类型 UserData

.成员 socket, 整数型

.成员 Name, 文本型

.成员 User, 文本型

.成员 Wxid, 文本型

.成员 V1, 文本型

.成员 Note, 文本型

.数据类型 WeChatMsg

.成员 Type, 整数型

.成员 Wxid, 文本型

.成员 Msg, 文本型

.数据类型 PROCESS_INFORMATION

.成员 hProcess, 整数型

.成员 hThread, 整数型

.成员 dwProcessId, 整数型

.成员 dwThreadId, 整数型

.数据类型 STARTUPINFO

.成员 cb, 整数型

.成员 lpReserved, 文本型

.成员 lpDesktop, 文本型

.成员 lpTitle, 文本型

.成员 dwX, 整数型

.成员 dwY, 整数型

.成员 dwXSize, 整数型

.成员 dwYSize, 整数型

.成员 dwXCountChars, 整数型

.成员 dwYCountChars, 整数型

.成员 dwFillAttribute, 整数型

.成员 dwFlags, 整数型

.成员 wShowWindow, 短整数型

.成员 cbReserved2, 短整数型

.成员 lpReserved2, 整数型

.成员 hStdInput, 整数型

.成员 hStdOutput, 整数型

.成员 hStdError, 整数型

.数据类型 CONTEXT, , CONTEXT

.成员 ContextFlags, 整数型, , , 0

.成员 Dr0, 整数型, , , 4

.成员 Dr1, 整数型, , , 8

.成员 Dr2, 整数型, , , c

.成员 Dr3, 整数型, , , 10

.成员 Dr6, 整数型, , , 14

.成员 Dr7, 整数型, , , 18

.成员 ControlWord, 整数型, , , 1c

.成员 StatusWord, 整数型, , , 20

.成员 TagWord, 整数型, , , 24

.成员 ErrorOffset, 整数型, , , 28

.成员 ErrorSelector, 整数型, , , 2c

.成员 DataOffset, 整数型, , , 30

.成员 DataSelector, 整数型, , , 34

.成员 RegisterArea, 字节型, , "80", 38

.成员 Cr0NpxState, 整数型, , , 88

.成员 SegGs, 整数型, , , 8c

.成员 SegFs, 整数型, , , 90

.成员 SegEs, 整数型, , , 94

.成员 SegDs, 整数型, , , 98

.成员 Edi, 整数型, , , 9c

.成员 Esi, 整数型, , , a0

.成员 Ebx, 整数型, , , a4

.成员 Edx, 整数型, , , a8

.成员 Ecx, 整数型, , , ac

.成员 Eax, 整数型, , , b0

.成员 Ebp, 整数型, , , b4

.成员 Eip, 整数型, , , b8

.成员 SegCs, 整数型, , , bc

.成员 EFlags, 整数型, , , c0

.成员 Esp, 整数型, , , c4

.成员 SegSs, 整数型, , , c8

.成员 ExtendedRegisters, 字节型, , "512", cc

======================================================