tftpd.exe开启调试

news/2024/10/21 2:29:35/

tftpd.exe开启调试

 debugFlags设置为0xf开启debug

设置为0xf000f则开启debug和trace
第一部分:
位置
net/tcpip/services/tftpd/service.c

    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                     "System\\CurrentControlSet\\Services\\Tftpd\\Parameters",
                     0, KEY_QUERY_VALUE, &parameters) != ERROR_SUCCESS)
上面是注册表路径


void
TftpdReadRegistryParameters() {

    DWORD keyType, valueSize;
    char path[MAX_PATH];
    HKEY parameters = NULL;

    // Open the registry key which contains all the adjustable parameters
    // to the service.  We will register for notification on it later incase
    // anything changes while we're running.
    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                     "System\\CurrentControlSet\\Services\\Tftpd\\Parameters",
                     0, KEY_QUERY_VALUE, &parameters) != ERROR_SUCCESS)
        parameters = NULL;
    if (parameters == NULL) {
        globals.parameters.hashEntries   =   256;
        globals.parameters.lowWaterMark  =     5;
        globals.parameters.highWaterMark =   256;
        globals.parameters.maxRetries    =    10;
        TftpdSetStartDirectory(NULL);
        strcpy(globals.parameters.validClients,    "*.*.*.*");
        strcpy(globals.parameters.validReadFiles,  "*");
        strcpy(globals.parameters.validMasters,    "*.*.*.*");
        strcpy(globals.parameters.validWriteFiles, "*");
        return;
    }

#if (DBG)
    // Initialize debug settings (if applicable) :
    keyType = 0;
    valueSize = sizeof(globals.parameters.debugFlags);
    if ((RegQueryValueEx(parameters, "DebugFlags", NULL, &keyType,
                         (LPBYTE)&globals.parameters.debugFlags, &valueSize) != ERROR_SUCCESS) ||
        (keyType != REG_DWORD)) {
        globals.parameters.debugFlags = 0x00000000;
    }
#endif // (DBG)


第二部分:
位置
net/tcpip/services/tftpd/debug.c

#if (DBG)

#include <stdio.h>


void __cdecl
TftpdOutputDebug(ULONG flag, CHAR *format, ...) {
    
    CHAR buffer[1024];
    va_list args;

    if (!(flag & globals.parameters.debugFlags))
        return;

    va_start(args, format);
    sprintf(buffer, "[%04X] ", GetCurrentThreadId());
    vsprintf(buffer + 7, format, args);
    va_end(args);

    OutputDebugString(buffer);

} // TftpdOutputDebug()

#endif // (DBG)

第三部分:
位置
net/tcpip/services/tftpd/precomp.h
//
// Debug
//

#if defined(DBG)

void __cdecl
TftpdOutputDebug(ULONG flag, char *format, ...);

#define  TFTPD_DEBUG(x)             TftpdOutputDebug x

#define  TFTPD_DBG_SERVICE          0x00000001
#define  TFTPD_DBG_IO               0x00000002
#define  TFTPD_DBG_PROCESS          0x00000004
#define  TFTPD_DBG_CONTEXT          0x00000008

#define  TFTPD_TRACE_SERVICE        0x00010000
#define  TFTPD_TRACE_IO             0x00020000
#define  TFTPD_TRACE_PROCESS        0x00040000
#define  TFTPD_TRACE_CONTEXT        0x00080000

#else

#define  TFTPD_DEBUG(x)

#endif // defined(DBG)


http://www.ppmy.cn/news/1540668.html

相关文章

【推导过程】常用离散分布的数学期望、方差、特征函数

文章目录 相关教程相关文献常用离散分布的数学期望&方差&特征函数二项分布数学期望方差 泊松分布泊松定理数学期望方差 超几何分布超几何分布的二项近似数学期望方差 几何分布几何分布的无记忆性数学期望方差 负二项分布 作者&#xff1a;小猪快跑 基础数学&计算数…

笔试练习day7

目录 OR59 字符串中找出连续最长的数字串题目解析解法(双指针遍历)代码 NC109 岛屿数量题目解析解法代码(dfs)dfs的实现 拼三角题目解析解法(枚举)代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &…

DBSwitch和Seatunel

一、DBSwitch 什么是DBSwitch?它主要用在什么场景&#xff1f; 通过步骤分析可以看到这个是通过配置数据源&#xff0c;采用一次性或定时方案&#xff0c;同步到数据仓库的指定表&#xff0c;并且指定映射关系的工具。有点类似于flinkcdc的增量同步。 参考&#xff1a; dbs…

webAPI中的排他思想、自定义属性操作、节点操作(配大量案例练习)

一、排他操作 1.排他思想 如果有同一组元素&#xff0c;我们想要某一个元素实现某种样式&#xff0c;需要用到循环的排他思想算法&#xff1a; 1.所有的元素全部清除样式 2.给当前的元素设置样式 注意顺序能不能颠倒&#xff0c;首先清除全部样式&#xff0c;再设置自己当前的…

Debian12离线部署docker详细教程

1、转至 https://download.docker.com/linux/debian/dists/ 2、在列表中选择您的 Debian 版本。 cat /etc/os-release # 我的版本号是bookworm3、转到pool/stable/并选择适用的架构&#xff08;amd64、 armhf、arm64或s390x&#xff09; 4、在deb网址下&#xff0c;下载Doc…

知识点:代理设计模式

1.场景设定和问题复现 1 准备项目 pom.xml <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.3.1</version> <scope>test</scope></dependen…

兰迪·舍克曼担任生命银行链(LBC)顾问,赋能基因数据区块链技术发展

兰迪舍克曼&#xff08;Randy Schekman&#xff09;作为生命银行链&#xff08;Life Bank Chain, LBC&#xff09;的顾问参与其中&#xff0c;这无疑是个令人兴奋的消息&#xff01;他在生理医学和基因研究方面拥有深厚的专业知识&#xff0c;必将对LBC的使命&#xff0c;即安全…

10-14到10-16学习笔记

mybatis-plus设置逻辑删除 1.配置全局的逻辑删除规则&#xff08;高版本可以省略&#xff09; 2.配置逻辑删除的组件bean(高版本可以省略) 3.给实体类的属性加上逻辑删除TableLogic注解 Element-ui的Dialog 对话框使用 <el-dialog :title"title" :visible.sync…