c hexdump「建议收藏」

c hexdump「建议收藏」记录下,有时要打日志用#ifndefhexdump_h#definehexdump_h#ifdef__cpluscplusextern”C”{#endif  voidhexDump(char*desc,void*addr,intlen);   #ifdef__cplusplus}#endif

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

记录下,有时要打日志用

#ifndef hexdump_h

#define hexdump_h

#include <SYS\TIMEB.H> //windows加入此头文件

#ifdef __cpluscplus

extern “C”

{

#endif

    void hexDump (char *desc,void *addr,int len);

    

char*   log_Time(void);

#ifdef __cplusplus

}

#endif

#endif /* hexdump_h */

#include <stdio.h>

#include “hexdump.h”


#include <sys/timeb.h>

#include <time.h>

char*   log_Time(void)

{

    struct tm      *ptm;

    struct timeb   stTimeb;

    static char    szTime[19];

    

    ftime(&stTimeb);

    ptm = localtime(&stTimeb.time);

    sprintf(szTime,“%02d-%02d %02d:%02d:%02d.%03d”,

            ptm->tm_mon+1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);

    szTime[18] =0;

    return szTime;

}

#define SIZE 255

void hexDump (char *desc,void *addr,int len) {

    int i;

    unsignedchar buffLine[17];

    unsignedchar *pc = (unsignedchar*)addr;

    

    

    if (desc !=NULL){

        

       

printf (“%s %s:\n”,log_Time(), desc);

        

    }

    

    for (i =0; i < len; i++) {

        

        if ((i %16) ==0) {

            

            if (i !=0)

                

                printf (”  %s\n”, buffLine);

            

            printf (“%04x “, i);

        }

        

        // Prints the HEXCODES that represent each chars.

        printf (“%02x”, pc[i]);

        if ((i %16) ==7)printf (” “);

        printf (” “);

        

        if ((pc[i] <0x20) || (pc[i] >0x7e)){

            buffLine[i % 16] =‘.’;

        }

        

        else{

            

            buffLine[i % 16] = pc[i];

        }

        

        buffLine[(i % 16) +1] =‘\0’;//Clears the next array buffLine

        

    }

    

    while ((i %16) !=0) {

        printf (”   “);

        i++;

    }

    

    printf (”  %s\n”, buffLine);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193568.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nginx代理tcp协议_tcp怎么加密传输

    nginx代理tcp协议_tcp怎么加密传输NGINX实现TCP加密代理

    2025年10月15日
    1
  • C时间轮

    C时间轮看完了《linux高性能服务器编程》对里面的定时器很感兴趣。书中提到三种定时器,分别是:基于升序链表的定时器,基于时间轮的定时器,基于时间堆的定时器。三种定时器的实现书中均是给了C++代码,不过我对C++不太感兴趣,虽然现在在做C++开发,因此写了C版本的。书中定时器只给了封装的定时器类,没有给调用层代码,我是估摸着写了调用层代码。这里做个总结,以后可以翻翻:基于升序链表的定时器没太大难度,因此也懒

    2022年10月1日
    2
  • Linux安装rinetd

    为什么80%的码农都做不了架构师?>>>…

    2022年4月7日
    123
  • Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程

    Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程Nexus是一种远程仓库,也是私服的一种

    2022年6月15日
    118
  • Elastic:开发者上手指南

    Elastic:开发者上手指南您们好,我是Elastic的刘晓国。如果大家想开始学习Elastic的话,那么这里将是你理想的学习园地。在我的博客几乎涵盖了你想学习的许多方面。在这里,我来讲述一下作为一个菜鸟该如何阅读我的这些博客文章。我们可以按照如下的步骤来学习:1)Elasticsearch简介:对Elasticsearch做了一个简单的介绍2)Elasticsearch中的一些重要概念:cluster,n…

    2022年6月13日
    26
  • 逆向-加壳工具介绍

    逆向-加壳工具介绍经过两周尝试手动编写加壳程序,目前也只是能实现给PE文件添加新区块,后面还有重定位表的修复,地址输入表的处理,虚拟机和花指令技术等反调试手段…一大串要学习的工作,几乎就是放弃了吧,通过这两周学习能让自己对PE文件和偏移地址、虚拟地址有一定了解也算不亏。目前就是转而向使用工具方向了。目前加壳的两个主要方向是压缩和加密。压缩壳压缩壳以UPX为代表,使用方法在前面的文章中有,此类壳的功能已压缩为主,对文件的加密效果几乎没有,Peid等侦壳工具可以轻而易举地发现这些壳,相应也有较成熟的脱壳机来实现。所以当文件

    2022年6月27日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号