DBG

【逆向】WinDbg符号文件详解

流过昼夜 提交于 2020-05-01 00:24:57
符号文件 编译器和链接器在创建二进制镜像文件(诸如exe、dll、sys)时,伴生的后缀名为(".dbg",".sym",".pdb")的包含镜像文件编译、链接过程中生成的符号信息的文件称为符号文件。 具体来说,符号信息包括如下内容: 1 // 全局变量(类型、名称、地址) 2 // 局部变量(类型、名称、地址) 3 // 函数(名称、原型、地址) 4 // 结构体类型定义 符号路径 符号路径是调试器寻找符号文件的方向,它可以是本地文件夹路径、可访问的UNC路径、或者是符号服务器路径。符号服务器有一套命名规则,使得调试软件能够正确找到需要的符号文件。为了降低网络访问的成本,WinDbg会将从服务器上下载到的符号文件,保存在本地缓存中,以后调试器需要符号文件的时候,先从缓存中寻找,找不到的时候再到服务器上下载。 设置符号路径 WinDbg允许用户指定一个或多个目录来存放符号文件,并使用环境变量" _NT_SYMBOL_PATH "来指向这些目录的位置。这样WinDbg在启动时就会自动到这些目录中搜索相应的符号文件。对操作系统内部模块的符号文件,你可以在微软官方网站上下载符号文件包(现在不提供离线下载了)。但是操作系统经常升级会导致系统中很多模块的实际版本与已经发布的符号文件无法匹配,因此,实际使用过程中最常用的方式是根据使用的模块版本访问微软提供的符号服务器下载( http:/

Vivado ILA观察信号和调试过程

时光总嘲笑我的痴心妄想 提交于 2020-04-29 23:22:56
先简单介绍一下ILA(Integrated Logic Analyzer)生成方法。这里有 两种办法 完成Debug Core的配置和实现。 方法一、mark_debug综合选项+Set Up Debug设定ILA参数。 1、在信号(reg或者wire)声明处加mark_debug选项,方法如下: // spi_mosi信号标记为需要ILA观测的信号 (* MARK_DEBUG = “TRUE” *) wire spi_mosi; mark_debug用法的详细说明请看Xilinx文档UG901_Synthesis 2、综合,进行 Run Synthesis 3、Open Synthesized Design,打开Set Up Debug,如图: 4、为ILA Debug Core添加需要观测的信号,结果如图: 每一个信号都要指定一个采样时钟域(Clock Domain)。 关于添加方法,还可以在Netlist窗口拖动信号到这个列表内。 注意到Netlist中有些信号名称前面有了绿色的小蜘蛛(小星星) ,正是Verilog程序中进行mark_debug的信号: 5、在Set Up Debug中设定信号采样收集的深度(Sample of data depth),输入流水级别数(Input pipe stages),Capture control和Advanced trigger选项。

ProxySQL官档翻译__24_Packaging

江枫思渺然 提交于 2020-04-29 13:06:56
24_Packaging 备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入 ~ ~ 打包[Packaging] 一、如何为ProxySQL支持的所有平台打包proxysql? [How do I package ProxySQL for all the platforms it supports?] 最简单的方法是转到repo的根文件夹并运行“make packages”。此命令假定您已安装Docker。除了为所有操作系统(centos/debian/ubuntu/fedora/debug build等)创建全套软件包外,还可以为特定操作系统和版本创建单独的软件包-以下平台是可以make的: centos6.7 centos7 centos6.7-dbg centos7-dbg centos5 centos5-dbg ubuntu12 ubuntu14 debian7 debian8 ubuntu14-dbg debian7-dbg debian8-dbg ubuntu16 ubuntu16-dbg fedora24 fedora24-dbg debian9 debian9-dbg ubuntu16-clickhouse debian9-clickhouse centos7-clickhouse fedora24-clickhouse 例如

Android自动化测试--monkey总结

人走茶凉 提交于 2020-04-24 22:50:58
什么是 Monkey   Monkey 是一个 Android 自动化测试小工具。主要用于Android 的压力测试, 主要目的就是为了测试app 是否会Crash. Monkey 特点   顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲。通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。 Monkey程序介绍   Monkey 程序是由 Android 系统自带,使用 Java 语言写成。在Android文件系统中的存放路径是: /system/framework/monkey.jar;   Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;   Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。 一、Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试

windows驱动调试简单方法

一曲冷凌霜 提交于 2020-04-10 15:24:29
vs2017直接联机部署到目标机,右键inf文件,安装。 管理员运行cmd,敲入sc start 驱动名称(实际上对应的是:HKLM/System/CurrentControlSet/Services/<驱动的服务名>) 宿主机windbg在DriverEntry下断, 目标机在cmd再敲入sc stop 驱动名称 目标机在cmd再敲入sc start 驱动名称,宿主机windbg即可断下来。 sc还有更多命令,直接打sc回车,即可看到使用说明。 注意:windbg调试wdk附带驱动时,一定要打开view-verbose output, 这样 DF_DBG_PRINT( DFDBG_TRACE_ROUTINES, "delete!DriverEntry: Entered\n" ); 这样的输出日志才能被查看到。 来源: oschina 链接: https://my.oschina.net/u/1777508/blog/1932115

ClickHouse学习系列之一【安装说明】

邮差的信 提交于 2020-04-05 23:15:45
ClickHouse学习系列之一【安装说明】 背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统。按照习惯第一步先安装,本文对其用户权限管理方面进行梳理说明。 ClickHouse是一个快速的开源数据库管理系统,它是面向列的。工作速度比传统方法快100-1000倍,ClickHouse的性能超过了目前市场上可比的面向列的DBMS。 每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。   先看ClickHouse官网怎么介绍它的一些特性: 快速:ClickHouse会充分利用所有可用的硬件,以尽可能快地处理每个查询。单个查询的峰值处理性能超过每秒2 TB(解压缩后,仅使用的列)。在分布式设置中,读取是在健康副本之间自动平衡的,以避免增加延迟。 容错:ClickHouse支持多主机异步复制,并且可以跨多个数据中心进行部署。所有节点都相等,这可以避免出现单点故障。单个节点或整个数据中心的停机时间不会影响系统的读写可用性。 可伸缩:ClickHouse可以在垂直和水平方向上很好地缩放。 ClickHouse易于调整以在具有数百或数千个节点的群集上或在单个服务器上,甚至在小型虚拟机上执行。当前,每个单节点安装的数据量超过数万亿行或数百兆兆字节。 易用:ClickHouse简单易用,开箱即用

Android -- WifiMonitor

*爱你&永不变心* 提交于 2020-03-01 09:51:44
在Android的Wifi体系中,WifiMonitor承担着分发来自wpa_supplicant底层事件的任务。当上层下达Wifi的扫描、连接等指令后, 底层驱动以及wpa_s进行实际的扫描、连接操作,操作完成后会向上层反馈一个event,通知framework扫描是否结束、连接是否成功。 WifiStateMachine在处理CMD_START_SUPPLICANT消息时,会执行驱动加载、启动wpa_s等操作: case CMD_START_SUPPLICANT: if (mWifiNative.loadDriver()) { try { mNwService.wifiFirmwareReload(mInterfaceName, "STA"); } catch (Exception e) { loge("Failed to reload STA firmware " + e); // Continue } try { // A runtime crash can leave the interface up and // IP addresses configured, and this affects // connectivity when supplicant starts up. // Ensure interface is down and we have no IP

Android9.0 开启关闭移动数据流程

∥☆過路亽.° 提交于 2020-02-28 23:39:29
@DcTracker.java public void setUserDataEnabled(boolean enable) { Message msg = obtainMessage(DctConstants.CMD_SET_USER_DATA_ENABLE); msg.arg1 = enable ? 1 : 0; if (DBG) log("setDataEnabled: sendMessage: enable=" + enable); sendMessage(msg); } 调用打开/关闭数据接口后,DcTracker给自己发送msg(DctConstants.CMD_SET_USER_DATA_ENABLE),在handleMessage中处理调用onSetUserDataEnable,这里是具体的打开/关闭数据的操作。打开操作是onTrySetupData(),关闭操作是onCleanUpAllConnections() private void onSetUserDataEnabled(boolean enabled) { if (mDataEnabledSettings.isUserDataEnabled() != enabled) { mDataEnabledSettings.setUserDataEnabled(enabled); if (

AndroidP 本地时间/时区自动更新 – NITZ

半城伤御伤魂 提交于 2020-02-26 14:57:58
NITZ - Network Identity andTime Zone,网络标识和时区,是一种用于自动配置本地时间和日期的机制,同时也通过无线网向移动设备提供运营商信息。NITZ经常被用来自动更新移动电话的系统时钟,Android原有的更新机制就是采用NITZ方式,这是一种运营商的可选服务。其基本原理简单的来说,就是UI根据 Modem主动上报的时间信息,更新终端系统的时间及时区。 初始化:构造函数 ServiceStateTracker() { … mCi.setOnNITZTime(this, EVENT_NITZ_TIME, null); … } 接收到EVENT_NITZ_TIME后,调用 setTimeFromNITZString去设置时间和时区 @Override public void handleMessage (Message msg) { ... case EVENT_NITZ_TIME: ar = (AsyncResult) msg.obj; String nitzString = (String)((Object[])ar.result)[0]; long nitzReceiveTime = ((Long)((Object[])ar.result)[1]).longValue(); setTimeFromNITZString(nitzString,

Erlang tracing (collect data from processes only in my modules)

非 Y 不嫁゛ 提交于 2019-12-13 04:01:14
问题 While tracing my modules using dbg, I encountered with the problem how to collect messages such as spawn, exit, register, unregister, link, unlink, getting_linked, getting_unlinked, which are allowed by erlang:trace, but only for those processes which were spawned from my modules directly? As an examle I don't need to know which processes io module create, when i call io:format in some module function. Does anybody know how to solve this problem? 回答1: Short answer: one way is to look at call