执行以下语句即可
1 | sqlite3 db.sqlite3 ".dump" > new.sql |
作业:将四选一数据选择器封装成IP,用以实现八选一数据选择器。
打开要封装的项目,然后点击工具栏Tools-Create and Package New IP-Next
打包当前项目即可(选择完Package your current project后一路Next)
(当然,这里也可以手动选择路径进行打包)
然后会出现Packaging Steps窗口
如果不想修改配置的话,可以直接选择最后一步,Review and Package-Package IP
打开需要调用IP的项目,点击左侧Flow Navigator-IP Catalog
在空白处右键,Add Repository,选择之前打包的文件夹
(如果之前打包的是项目的话,则对应.srcs文件夹,如D:\source\Vivado\mux_8_1\mux_8_1.srcs)
然后双击导入的IP,导入并生成
导入成功后,在Sources-IP Sources中可以看到IP
其中Instantiation Template即为实例化模板
最简单的方法,把实例化代码复制出来,修改一下实例名称以及参数即可
如:
1 | mux_4_1_0 m2 ( |
注意,实例化时,output只能是wire类型,不然语法错误
vivado学习之自定义IP和调用自定义IP的步骤
Unknown Error during synthesis of AXI IPs
从安卓7.0开始,Android更改了对用户安装证书的默认信任行为。应用程序默认只信任系统级别的CA证书。
所以需要hook第三方包的证书校验函数(如JustTrustMe)或者直接导入为系统证书以供抓包
从抓包应用中导出即可。
1 | openssl x509 -inform DER -in cacert.der -out cacert.pem |
<hash>替换成输出的值
/system/etc/security/cacerts挂载system为可读写
1 | mount -o remount,rw /system |
复制到/system/etc/security/cacerts下,并设置权限为644,然后重启
(也可打包成magisk模块刷入)
使用开发者工具(F12)分析一个网站时发现:
每隔一段时间就会有js代码主动触发调试器断点,妨碍分析。
问之度娘,遂得解法。
有两种情况,一种是直接调用debugger,如:
1 | function _$gy(){debugger;} |
那么控制台执行以下语句即可:
1 | function _$gy(){} |
另一种是匿名函数,代码如下:
1 | (function() {var a = new Date(); debugger; return new Date() - a > 100;}()) |
需要查看调用栈,找到调用进行重定义。具体操作为:
双击调用栈中的主调函数,找到函数名,控制台进行nop。
这个问题解决起来还是蛮简单的,问题解决只需要一句话:禁止断点。
而对应的操作是在Chrome控制台的Source Tab页点击Deactivate breakpoints按钮或者按下Ctrl + f8。
开发一个适配QQ 8.1.3的防撤回插件,并显示撤回通知。
设置com.tencent.mobileqq.app.message.QQMessageFacade.a(ArrayList.class, boolean.class)方法的返回值为空即可
1 | //在beforeHookedMethod中执行 |
上一个方法的第一个参数(ArrayList)内容(toString)形如:
1 | [RevokeMsgInfo[istroop= 1, shmsgseq= 356, frienduin= 1234568, fromuin= 12345678 msguid= 0, time= 1568796904, senduin= null, longmsgid= 0, longmsgcount=0 longmsgindex=0] |
当istroop为1时,frienduin是群号,否则为好友qq。
在某个版本后,toString的结果中frienduin被截断,所以解析字符串的方法行不通了。
可以通过反射来获取需要的字段值。
这个功能的实现比较复杂,需要获取和生成一些类对象。
首先通过反射获取到QQAppInterface实例(QQMessageFacade的字段)
然后调用QQAppInterface.getCurrentAccountUin方法获取自己的qq
再通过反射将RevokeMsgInfo字段取出,为构造撤回提示做准备。
然后通过MessageRecordFactory构造MessageRecord。
然后使用ArrayList将其打包。
最终调用com.tencent.mobileqq.app.message.QQMessageFacade.a(ArrayList.class, int.class)方法来显示撤回提示。
具体可以参考QQ净化的防撤回实现。
判断是否为自己撤回的信息,如果是则不做处理。
通过调用ContactUtils的函数来获得。
因为QQ版本不同,有些类名经过了混淆。
适配的关键在于找出混淆后的类名。
可反编译dex后,根据特征(字符串、函数参数、类结构等)查找smali。
防撤回功能涉及以下两个被混淆的类:
1 | String MessageRecordFactory = "avay"; |
今天从Chrome迁移到了Microsoft Edge, based on Chromium
期间发现谷歌应用商店居然没有IDM拓展,只有Open With Internet Download Manager
而这个插件需要打native messaging host补丁,补丁不适用于Edge,于是自己研究了一下解决方法
修改配置文件,手动添加授权拓展
定位到注册表计算机\HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.microsoft.browsercore
项目值为C:\Program Files\Windows Security\BrowserCore\manifest.json
定位到该文件,修改文件权限后,在allowed_origins中添加:
1 | "chrome-extension://epgilldoipfbdlneomlmegekaoonchcj/", |
重启Edge即可正常调用IDM
PS: 需要手动修改下拓展设置,配置为本地IDM路径
Open-in Native Client
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging
Word是可以直接使用LaTeX公式的,本文适用于已经使用LaTeX写好的论文。
方法:插入-公式-插入新公式,然后点击设计,选择LaTeX。
LaTeX公式直接复制到word的公式编辑中效果可能不太好,而且不太方便。
这里通过MathML作为中间格式进行转换。
该工具能把tex文件整体转换为docx文件,执行以下命令(homework自行替换)
1 | pandoc homework.tex -o homework.docx |
以$\bar{x}$为例:
1 | \bar{x} |
结果为
1 | <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> |
同样打开texmath demo
右键顶部的公式,Show Math As,选择MathML即可
结果为
1 | <math xmlns="http://www.w3.org/1998/Math/MathML"> |
enjoy it.