效果:

原理:

qq分享产生的xml卡片消息存储在qq内存中,可以在qq运行内存中搜索找到其xml源码,记录源码相应的内存地址,通过内存地址修改掉内存数据,再次转发这条分享的消息就会发现内容的变化。

实现:

1.打开一个会话窗口,随意给对方分享一条卡片消息

2.在cheat engine中指定打开这个会话窗口的进程

3.设置cheat engine要搜索的数据类型为字符串,搜索卡片消息中的关键词

4.在cheat engine的搜索结果列表中ctrl+a全选,右键修改选中的地址数据,修改任意字符

5.回到刚才的qq会话窗口,转发我们修改的那条卡片消息,可以看到已经成功地修改了内容

要实现完全自定义XML卡片消息就要继续操作↓

6.回到cheat engine,过滤掉内容改变了的条目。搜索我们修改后的内容,记得点“继续搜索”,不要点“新的搜索”

还需要继续过滤,直到确定唯一存储了卡片消息源码的那个内存地址。

7.选择搜索结果中的一半条目,右键改变选中的地址数值

8.回到qq会话窗口再次转发那条消息,测试刚才的修改数值操作是否有影响,是否起到了作用。

若转发的消息内容无变化,说明刚才所选的那些地址不是存储xml源码的地址,删除那些地址条目;

若内容变化,说明所选的地址其中有一个真正存储xml源码的地址,删除除这些地址以外的地址条目。

9.现在就剩3条了,一条条的修改地址数据,每次修改后就回到会话窗口转发下卡片消息,直到转发出去的消息内容与我们修改的内容一样,即可断定哪个地址是那条xml消息源码的存储地址

10.在最终确定的地址条目上右键浏览内存区域,可以看到这个内存地址前后的数据(需要在数据浏览区右键将字符串编码指定为UTF-8)

11.按键盘的上方向键浏览内存数据,找到xml消息源码的开头标志

12.点击开头标志的第一个字符串,右键将选中的数据内存地址添加到列表,回到cheat engine主界面

13.双击条目的type(类型)表头数据,将刚才添加的地址条目的数据类型指定为字符串

14.双击(value)数值表头数据,可以自定义,输入任意样式的xml卡片消息源码了。

转发测试效果

C#使用WINAPI修改软件运行内存的小例子

     [DllImportAttribute("kernel32.dll")]public static extern IntPtr OpenProcess(int dwDesiredAccess,bool bInheritHandle,int dwProcessId);[DllImportAttribute("kernel32.dll")]public static extern bool WriteProcessMemory(IntPtr hProcess,IntPtr lpBaseAddress,int[] lpBuffer,int nSize,IntPtr lpNumberOfBytesWritten);[DllImport("kernel32.dll")]private static extern void CloseHandle(IntPtr hObject);public static void WriteMemoryValue(){IntPtr hProcess = OpenProcess(0x1F0FFF, false, 8608); WriteProcessMemory(hProcess, (IntPtr)0x17729DBF, new[] {0x3C, 0x3F,}, 4, IntPtr.Zero);CloseHandle(hProcess);}

最后说几句:

这里随便解释几个qq内置的xml卡片消息样式的标识符,更多的可以通过搜索内存查找分析或网上提问。

ActionData:点击消息的跳转地址,可以跳转打开一个网址,可以打开一个qq号的资料卡

<msg serviceID="1" templateID="1" action="plugin" actionData="mqqapi://card/show_pslcard?src_type=internal&amp;source=sharecard&amp;version=1&amp;uin=2221234077" brief="[QQ红包]新年快乐!" sourceMsgId="0" url="" flag="0" adverSign="0" multiMsgFlag="0">

Source:消息后缀

<source name="官方认证消息" icon="https://qzs.qq.com/ac/qzone_v5/client/auth_icon.png" action="" appid="-1" />

Item:内容板块,可以在消息内容中插入一张图片,可以插入标题,具体内容。layout的数值决定了板块的样式

<item layout="9">

--->2018-06-13补充:

qqxml样式标志作用解析:

一、基础框架

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1"></msg>

框架中的消息内容里至少有一项内容才能发送出去

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item layout="2"><title>生死8秒!女司机高速急刹,他一个操作救下一车性命</title></item>
</msg>

二、消息设置

1.简要提示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1"
brief="[QQ红包]发红包啦!">
<item><title>生死8秒!女司机高速急刹,他一个操作救下一车性命</title></item>
</msg>

2.点击打开资料卡

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1"
action="plugin" actionData="mqqapi://card/show_pslcard?src_type=internal&amp;source=sharecard&amp;version=1&amp;uin=2221234077">
<item><title>生死8秒!女司机高速急刹,他一个操作救下一车性命</title></item>
</msg>

3.点击打开网页

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1"
action="web" url="http://buluo.qq.com/mobile/detail.html?bid=12372&amp;pid=4694151-1528083221&amp;_bid=128&amp;_wv=1027#from=grp_sub_obj&amp;gid=613689927&amp;_wv=1027">
<item><title>生死8秒!女司机高速急刹,他一个操作救下一车性命</title></item>
</msg>

三、消息内容

1.标题

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item>
<title>生死8秒!女司机高速急刹,他一个操作救下一车性命</title>
</item>
</msg>

2.正文(可通过标志属性自定义文本颜色、大小、风格)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item>
<title>test title</title>
<summary>test content</summary>
</item>
</msg>

3.图片

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item>
<title>test title</title>
<summary>test content</summary>
<picture cover="http://url.cn/5CEwIUy"/>
</item>
</msg>

四、消息后缀

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item><title>生死8秒!女司机高速急刹,他一个操作救下一车性命</title></item>
<source name="官方认证消息" icon="https://qzs.qq.com/ac/qzone_v5/client/auth_icon.png" action="" appid="-1" />
</msg>

五、内容板块样式

默认样式:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item>
<title>test title</title>
<summary>test content</summary>
<picture cover="http://url.cn/5CEwIUy"/>
</item>
</msg>

样式2:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item layout="2">
<title>test title</title>
<summary>test content</summary>
<picture cover="http://url.cn/5CEwIUy"/>
</item>
</msg>

样式3:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<msg serviceID="1">
<item layout="9">
<title>test title</title>
<summary>test content</summary>
<picture cover="http://url.cn/5CEwIUy"/>
</item>
</msg>

样式4:

 layout="10"

更多样式请修改layout的值自行测试。

转载于:https://www.cnblogs.com/aucy/p/9142627.html

PCQQ - 发送自定义的XML卡片消息相关推荐

  1. 小飞鱼通达二开 PHP使用钉钉接口发送带链接的卡片消息(代码)

    普通的钉钉消息,采用小飞鱼上一篇文章的方法进行发送即可,很多时候我们需要在发送消息的同时想让接收人看到消息后可以直接点击链接进入到应用内进行相关操作,这里我们就采用了卡片消息的方法,当然钉钉还提供有很 ...

  2. QQ发送json红包卡片消息(完整攻略)

    有时候看到别人能发送QQ红包,可以点进去却不是红包.这么炫酷的技能你想学会吗? 不仅能发红包,还可以发送各种好玩炫酷的功能. 有哪些消息可以用呢? 接下来,将奉上完整攻略: 一.准备工作:下载借助的软 ...

  3. QGC添加自定义组件和发送自定义MAVLINK消息

    QGC添加自定义组件和发送自定义MAVLINK消息 一.添加自定义组件 1.1 在飞行界面添加组件 1.2 实现组件事件 1.3 在MOCK模拟链接中实现验证 1.4 验证 二.自定义MAVLINK消 ...

  4. PC微信机器人之实战分析微信发送xml名片消息call

    今天主要分析一下找微信发送xml名片消息的call,用到的工具是OD和CE,这个不同与发消息的call,可以一直发消息,一个一个去找,去改wxid然后确定:发送名片的流程是先在聊天窗口,然后点击发送名 ...

  5. 发送结构化的网络消息

    文章目录 1 发送结构化的网络消息 1.1 概述 1.2 服务端实现 1.3 客户端实现 1 发送结构化的网络消息 1.1 概述 我们之前都是采用纯字符串网络消息,特点如下: 优点:处理简易命令方便快 ...

  6. android: 发送自定义广播

    5.3.1    发送标准广播 在发送广播之前,我们还是需要先定义一个广播接收器来准备接收此广播才行,不然发 出去也是白发.因此新建一个 MyBroadcastReceiver 继承自 Broadca ...

  7. Android 第二十课 广播机制(大喇叭)----发送自定义广播(包括发送标准广播和发送有序广播)

    广播分为两种类型:标准广播和有序广播 我们来看一下具体这两者的具体区别: 1.发送标准广播 我们需要先定义一个广播接收器来准备接收此广播才行,否则也是白发. 新建一个MyBroadcastReceiv ...

  8. android#boardcast#发送自定义广播

    广播主要分为两种类型,标准广播和有序广播,通过实践的方式来看下这两种广播具体的区别. 一.发送标准广播 在发送广播之前,我们还是需要先定义一个广播接收器来准备接收此广播才行,不然发出去也是白发.因此新 ...

  9. 情迁机器人Tim_情迁QQ机器人1.8.0更新后的使用技巧(卡片消息福利)

    1.增加卡片命令 增加管理员命令 配置 卡片 卡片消息xml 非管理员命令卡片 这个命令可以进入群白名单管理里面勾选开启,否则非管理发送此命令不会有任何回复. 2.卡片消息参数支持传递变量 3.变量支 ...

  10. DingTalk钉钉机器人单聊互动卡片消息的一次实现(附仓库)

    DingTalk钉钉机器人单聊互动卡片消息的一次实现 dingtalk-module迭代记录 07-08-22: 完善一下一些定义的接口, 方便理解 07-26-22: 看了下文档, 钉钉更新了两种互 ...

最新文章

  1. javascript 两个数组组成一个对象
  2. TLS实现代码段加密
  3. [北京活动] 5月11日 PMCAFF创业私密分享会邀请函已经下发
  4. github可视化_Github上 10 个超好看可视化面板
  5. head first servlet jsp 学习笔记
  6. linux iso合并,把RedHat Linux 5.0的CD ISO合并成DVD的脚本
  7. rhel 7.2 安装mysql_在rhel7.2下源码安装mysql-5.6.35
  8. 文本摘要综述-bertsum、BottleSum、TextRANk
  9. ASP.NET Web API 2 中的属性路由使用(转载)
  10. error: ignoring return value of 编译错误处理
  11. 清明上河图对计算机技术的启发,《清明上河图》鉴定故事的启示
  12. SAMBA文件共享服务
  13. 编码:decode()/encode()、quote()/unquote()
  14. 浏览器访问IPv6地址
  15. 322. Coin Change
  16. 【微信小程序】实现简单轮播图效果
  17. c语言编程为啥弹出的框会闪退,js中提示框闪退问题
  18. Net-snmp添加子代理示例
  19. 更换maven的settings未生效解决办法
  20. modprobe 找不到文件

热门文章

  1. 惠普服务器装centos 系统安装,hp 服务器安装linux系统安装
  2. USG6310恢复管理员密码
  3. 【虚拟化数据恢复】KVM虚拟机误删除数据恢复案例
  4. Word下修改默认新建样式模板方法
  5. OCR识别技术之—车牌识别
  6. css向右箭头形状按钮,详解Bootstrap的纯CSS3箭头按钮样式
  7. 【微信小程序】关于小程序的协同工作与发布的工作流程
  8. java中求数组中最大值
  9. 手机文件夹为什么是英文?哪些可以删除?看完清理能多出10G内存
  10. commitlint