#

Hello 2016

新的一年,做一个有计划的人。
2016比想象中来得更快,转眼就要找工作了,即满怀期待又充满忧虑。唯有多看点书、多写点代码才能减轻一点我的忧虑,哈哈。
2016年首先要做出的改变就是改变一担忧就买书的习惯,所以为了把这个坑填上首先就是要把这些书解决。
修生养性篇
《你一定爱读的极简欧洲史》
《异类》
《少有人走的路:心智成熟的旅程》

火眼(FireEye)实验室FLARE IDA Pro脚本系列:MSDN注释插件----实践

主要实践了这篇文章火眼(FireEye)实验室FLARE IDA Pro脚本系列:MSDN注释插件,主要是有几个坑需要注意,然后就能实现功能了。

##原始步骤

Window服务学习笔记

参考资料:
用 C 语言编写 Windows 服务程序的五个步骤
如何编写windows服务程序
用C创建并调用Windows服务(守护进程)
创建SvcHost.exe调用的服务原理与实践
黑客防线201301



关于Windows服务

Windows系统中的服务几乎是都是默默无闻的存在的,大部分是一些系统进程,负责电源管理、网络及安全方面等与用户无交互的工作,在客户服务模型中主要是作为服务端存在。




Windows服务主要由3个部分组成,包括服务应用、服务控制程序(scp)及服务控制管理器(scm)。
服务应用即运行的服务程序,与普通的Windows可执行程序类似,只是有一些与scm的接口函数,负责与scm通信。
服务控制程序(scp)即负责控制服务应用的程序,Windows系统内置了一些scm的功能,比如我们可以sc命令控制服务应用的启动、停止等,有一些服务也自带了scp提供一些自定义的共计功能。服务控制程序就是普通的Windows用户程序。
服务控制管理器(scm)就是系统中负责在系统中管理全部服务的应用的,包括安装服务、负责服务自启动。容易和服务控制程序(scp)混淆,scp只是一个工具而scm是一个系统,scp就好比一种方法,scm是一个机构[好吧。。。这个比方不好]。

Http协议初学

参考资料:
IP、TCP和DNS与HTTP的密切关系
实现HTTP协议Get、Post和文件上传功能——设计和模块
HTTP必知必会
HTTP协议 通信过程介绍
图解HTTPS
<<图解HTTP>> 上野宣
全抄袭,仅当监督学习。。。。。。。

##Http协议和TCP、IP协议的关系
我们都知道http协议是一种应用层协议,应用层协议又是什么意思呢?就是要利用下层协议的然后通过自定义一种格式的方式生成了一坨数据然后丢给下一层协议拿去发送(反正我是这么理解的,应该还是对的)。这里的自定义的一种格式就是HTTP协议格式,这里的下一层协议就是TCP协议。且Http协议是一种无连接、无状态的协议,即没有tcp的长连接请求然后响应后理解断开,对事务无记忆能力。


Http协议和其他协议关系

读书计划

这几天总是有种莫名的恐慌,各种担心加上bug解决不了项目也进展缓慢。想想可能是每天太过得太杂碎了。。。东一下西一下,毫无方向可言,这种感觉就和大一、二相似。
“读书能让心灵平静下来,远离浮躁“貌似是这个意思,同时也为了让自己之前一空虚就买下的书体现价值,把平时凌乱的知识点整理出来,遂想着订个读书计划,也监督自己学习。

一种让Ring 3程序断下来的方法

背景

解决一个bug**的过程中使用windbg但是断不下来,因为每次符号信息没来得及加载系统就蹦了。so想到之前驱动调试的 int 3但程序是64位的不好嵌入汇编想到DbgBreakPoint(),遂有下面的方法
在应用层中直接调用ntdll的DbgBreakPoint。
大概就像下面这个样子:

关于"Process32First"返回false的问题

问题描述

1
2
3
4
5
6
7
8
9
10
11
http://blog.csdn.net/hbu_dcf/article/details/3491276
现象:Process32First"返回值为0,GetLastError()取到的错误是:〖24〗-程序发出命令,但命令长度
不正确。
分析:在调用这个函数前,需要:pe32.dwSize = sizeof(PROCESSENTRY32);,
不设的话,就会一直返回0,而虽然我设定了大小,但是出错原因是命令长度不正确,所以肯定还是这句
代码出了问题。
参考:
有因为使用了"unicode模式"而且没有初始化PROCESSENTRY32对象里面的dwsize对象,可以使用sizeof
(PROCESSENTRY32)来初始化.有时候在release模式下不能通过但debug可以通过也可能是这个原因
解决方案:最后实在没了办法,把工程属性-配置属性-常规-字符集-未设定,原来是unicode字符集。
问题解决,不过还是很晕。

装x的一次调试(用vs2008调试vs2015)

题目很装逼,其实就是用08找到了导致15崩溃的原因

事情是这个样子的,装上vs2015后只是运行了个HelloWord就没管了。今天突然想起来了,想试试15的功能有没有什么变化,但是吧 一打开再一点击就崩了,难道又是姿势没对,那就再来一次吧还是崩了,看来是哪个地方出现问题了。
那我们就来看看问题详细信息吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  问题事件名称:	BEX
应用程序名: devenv.exe
应用程序版本: 14.0.23107.0
应用程序时间戳: 559b7ead
故障模块名称: StackHash_0a9e
故障模块版本: 0.0.0.0
故障模块时间戳: 00000000
异常偏移: 000b0000
异常代码: c0000005
异常数据: 00000008
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
C:\Windows\system32\zh-CN\erofflps.txt

获得Windows系统版本信息的正确姿势On Windows10

参考资料:
Targeting your application for Windows.aspx)

这两天想对一个程序进行升级,原始程序只支持win7。要对系统版本进行确定,正确显示出系统版本信息,本来应该是一个非常简单的事情但是但是为什么在win10上系统版本还是6.2呢buildnumber为什么还是9200呢。奇怪。。。。。
既然有问题咱们就来想想有哪些可能性吧:

  • 1.Win10系统是测试版,系统内核版本信息等都还是win8的
  • 2.由于使用的是vs2008编译的,可能是程序默认使用兼容性方式运行所以获得的是win8系统信息
  • 3.打开程序姿势不对,哈哈
    先试试win10系统吧,由于不记得win10是什么时候装的只有systeminfo看看系统信息。嗯,系统版本buildnumber是10240对的是win10正式版,排除1。
    再看哈2,程序信息没有选择以兼容性模式运行啊。对了,突然想到好像某些时候只要程序不显式声明支持新系统默认直接兼容运行,那怎么显式声明呢?这里就需要我们前面一篇Visual Studio使用备注中提到过的manifest文件,vc6中添加看那篇文章第8点。vs2008附加添加直接vs工程属性里找到“清单工具->输入和输出->附加清单文件”里填入manifest文件的相对路径,然后重新链接。
    针对win10的manifest文件如下: