摘要:
本文分享&备忘最近了解到的icon资源在windows平台下相关的一部分知识。所有测试代码都尽可能的依赖win32 API实现。通过源码可以了解其结构,同时它们也是可复用的代码积累。 内容摘要:如何保存exe的图标为*.ico文件、如何遍历PE文件的icon资源并保存为*.ico文件、如何合并多个*.ico文件、如何分割含有多张图片的*.ico文件一、保存exe的图标为*.ico文件 exe在windows shell下的可显示图标有3或者4种,使用win32 API获取它们的ICON handle的代码也很简单,前一篇文章已经说过。这里主要难点是如何根据ico文件的存储格式,把HIC 阅读全文
摘要:
本文分享&备忘最近了解到的icon资源在windows平台下相关的一部分知识,所有测试代码都尽可能的依赖win32 API实现。更全面的知识,参考文末列出的”参考资料“。 关键字:Icon资源存储结构、windows shell下显示哪个图标、如何获取EXE各种长宽的显示图标。 一个icon... 阅读全文
摘要:
一、源码下载:http://sourceforge.net/projects/sevenzip/二、各种EXE及其功能代码里面有很多的dsw工程,功能不一,size不一,需要挑选合适的加入到自己的工程中,下边是今天对各个工程做测试得出的结果,汇总下有利于挑选,源码是lzma压缩算法的,部分信息可以从源码的lzma.txt文档里看到:1、C文件夹下的lzmautil编译出来的是:7lzma.exe,这个exe只能压缩、解压单个文件对单个文件。2、C文件夹下的7z编译出来的是:7zDec.exe,只能解压(可以是单个压缩包对多个文件)。/MD编译选项下的这个exe只有39KB。3、C文件夹下的sf 阅读全文
摘要:
前阵子写静态lib导出单实例多线程安全API时,出现了CRITICAL_SECTION初始化太晚的问题,之后查看了错误的资料,引导向了错误的理解,以至于今天凌晨看到另一份代码,也不多想的以为singletone double check会出bug,本文做下记录备忘。 相关知识点:Singleto... 阅读全文
摘要:
一、RST包也常见于断开TCP连接 几个月前用wireshark抓HTTP包发现有的网络通信在结束的时候没有使用四次握手,而是直接使用RST包。如: 在TCP协议中RST表示复位,用来异常的关闭连接。在发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。“异常的关闭连接”是很常见的事情,特别是在使用WinHttp时。 关闭TCP连接除了常见的四次握手之外,还有发送RST包的方式。下边是使用libcurl做的post测试,post成功时正常关闭,否则异常关闭。结束TCP:四次握手图结束TCP:发RST包图二、... 阅读全文
摘要:
Windows Services 学习一、学习点滴1、本机服务查看:services.msc /s2、服务手动安装(使用sc.exe):sc create MemoryStatus binpath= c:\MyServices\MemoryStatus.exesc delete MemoryStatus3、把服务所在进程杀掉,服务也就停止了。4、服务删除,错误信息:D:\>sc delete Sample_Srv[SC] DeleteService FAILED 1072D:\>sc stop Sample_srv[SC] ControlService FAILED 1052解决: 阅读全文
摘要:
一两个月前为产品写了一个独立的exe,由于产品使用的捕获dump是一个现成的进程外exe,如果以资源的方式集成它容易出现安全警告,由于时间关系没有寻求新的解决方法,还是遵循旧方案,不捕获dump。 最近业余看了会儿breakpad client,想到一个解决方案——其实也蛮简单的,最后exe大概会增加200多KB。下边从头分析。 有这样一种需求,希望一个进程启动之后,有另一个进程来“守护”它,当它发生crash时,能生成dump,然后把它重启;还有一个要求,“守护”进程跟工作进程必须是在同一个物理文件里,就像chromium一样,它是多进程的,但只有exe文件只有一个。借助breakpa... 阅读全文
摘要:
breakpad是Google开源的一套跨平台工具,用于dump的处理。很全的一套东西,我这里只简单涉及breakpad客户端,不涉及纯文本符号生成,不涉及dump解析。一、使用 最简单的是使用进程内dump捕获,使用者只需要跟ExceptionHandler打交道,在自己的程序里定义一个ExceptionHandler对象,ExceptionHandler会挂上异常处理、CRT参数错误处理、purecall错误处理,当发生crash时,breakpad会写好dump,然后回调通知使用者。进程内dump并不推荐,但也不算太差,它在程序启动时就开启了一个“Handler thread”,等... 阅读全文
摘要:
一般要捕获异常只需要两个函数:SetUnhandledExceptionFilter截获异常;MiniDumpWriteDump写dump文件。但是由于CRT函数可能会在内部调用SetUnhandledExceptionFilter(NULL),解除我们程序设置的异常处理,这导致我们的程序无法完整捕获崩溃。另外,还有一部分非异常的CRT错误,不属于SEH异常捕获的范畴,需要通过_set_invalid_parameter_handler、_set_purecall_handler拦截,否则会弹出很丑陋的Runtime Error提示框。为保证所有异常都能由我们捕获,需要把SetUnhand.. 阅读全文
摘要:
抓包命令行工具tshark可以用于自定制,相比GUI工具可以实现一些自动化,譬如把某些关注的数据抓起下来存放到文本中,然后再分析输出。 demo:std::string decodeHex(const std::string& strHex){ int nLen = strHex.length() / 2; std::string strRet(nLen, 0); for (int i = 0; i != nLen; ++i) { strRet[i] = ((strHex[2*i]>='a') ? (strHex[2*i]-'a'+10) : (s 阅读全文