自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

125096

我是125096,欢迎大家来我的csdn博客!

  • 博客(36)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 windbg下查看应用层ntdll!NtOpenProcess

//查看进程explorer.exe信息!process 0 0 explorer.exe//切换到进程.process /p 81ff0020 //加载符号.reload//查看应用程ntdll模块中NtOpenProcess u ntdll!NtOpenProcess

2016-06-29 20:09:14 1294

原创 !process 不能使用解决

.sympath srv*E:\Symbols*http://msdl.microsoft.com/download/symbolslkd> !processNT symbols are incorrect, please fix symbols=====>1. 若符号存在E:\Symbols,输入命令:.sympath srv*E:\Symbols*http://msdl.mi

2016-06-29 13:51:06 2046 1

原创 calc_ctl_code

#include #include #include #define FILE_DEVICE_UNKNOWN 0x00000022#define METHOD_BUFFERED 0#define FILE_ANY_ACCESS 0//#define IOCTL_TEST CTL_CODE(F

2016-06-29 09:46:52 420

原创 windbg下EPROCESS获取进程加载模块

//查看指定的进程信息kd> !process 0 0 explorer.exePROCESS 88adb2b0 SessionId: 1 Cid: 0534 Peb: 7ffdd000 ParentCid: 0520 DirBase: 3eb99280 ObjectTable: 8c033088 HandleCount: 674. Image: explore

2016-06-28 15:15:03 2707

原创 Dll注入技术之APC注入

APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,其具体流程如下: 1)当EXE里某个线程执行到SleepEx()或者WaitForSingleObjectEx()时,系统就会产生一个软中断。 2)当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数。 3)利用QueueUserAPC

2016-06-27 15:53:51 794

原创 通过符号文件获取函数地址

//通过符号文件获取函数地址#include #include #include #include #include "ntdll.h"#pragma comment(lib,"dbghelp.lib")//获取函数地址PDBULONG_PTR GetFunctionAddressPDB(HMODULE hMod, const WCHAR * szApiName){

2016-06-27 15:51:29 3461

原创 正确的加载自己写的dll

怎么能让程序正确的加载自己写的dll(1)把dll放在程序的debug目录下,在进行关联。(2)直接把DLL放在c:\windows\system目录下(3)添加环境变量 a,system(set Path = %Path%d:\\mydll); b,BOOL WINAPI SetDlldirctory(LPCTSTR LpPathName); 顺便给自己补充一下环境变量

2016-06-27 11:36:31 1139

原创 隐藏 LoadLibrary() 函数

#include typedef struct _UNICODE_STRING { // UNICODE_STRING structure USHORT Length; USHORT MaximumLength; PWSTR Buffer;} UNICODE_STRING;typedef UNICODE_STRING *PUNICODE_STRING;typedef NTST

2016-06-27 11:31:36 449

原创 CHtmlDialog(VC)

目录CHtmlDialog 对话框与普通对话框的区别事件处理映射宏DDX 宏C++ 与 javaSript 的相互调用CDHtmlDialog 中 html 资源加载 css 样式,js 脚本,图片CHtmlDialog 对话框与普通对话框的区别目前发现了四点(可能还有更多):类的继承关系class CTestHtmlDialogDlg : public CDHtmlDial

2016-06-21 17:22:52 1157 1

原创 线程池

线程池的功能以异步的方式来调用一个函数每隔一段时间调用一个函数当内核对象触发的时候调用一个函数当异步 I/O 请求完成的时候调用一个函数注意当一个进程初始化的时候,它并没有任何与线程池的开销.但是,一旦调用了新的线程池函数,系统就会为进程相应的内核资源,其中的一些资源在进程终止之前都将一直存在.正如我们可以看到,使用线程池的开销取决于用法:系统会以进程的名义来分配线程,其他

2016-06-21 17:02:52 455

原创 mysql

mysql的常用信息函数mysql -p #root用户登陆mysqlselect version(); #查询当前数据库服务器版本信息select user(); #查询当前用户select curdate(); #查询当前日期select curtime(); #查询当前时间select now(); #查询当前日期时间show tables

2016-06-19 12:34:21 263

原创 dump

dump.h#ifndef DUMP_HEAD_FILE#define DUMP_HEAD_FILE#pragma once#include #include #include #include #include #include #pragma comment(lib, "dbghelp.lib")#pragma warning(disable:4996) #

2016-06-18 20:25:25 639

原创 fork函数相关总结

fork的作用是根据一个现有的进程复制出一个新进程,原来的进程称为父进程(Parent Process),新进程称为子进程(Child Process)。系统中同时运行着很多进程,这些进程都是从最初只有一个进程开始一个一个复制出来的。在Shell下输入命令可以运行一个程序,是因为Shell进程在读取用户输入的命令之后会调用fork复制出一个新的Shell进程,然后新的Shell进程调用exec执行

2016-06-18 17:21:58 351

原创 linux系统编程之文件与I/O(五):fcntl 函数与文件锁

#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while(0)int main(int argc, char *a

2016-06-18 15:30:45 415

原创 linux系统编程之文件与I/O(四):文件的属性

#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while(0)#define MAJOR(a) (int)((uns

2016-06-18 15:07:15 436

原创 linux系统编程之文件与I/O(三):目录的操作

一、目录的访问功能说明:打开一个目录原型:DIR*  opendir(char *pathname);返回值:打开成功,返回一个目录指针打开失败,则返回NULL功能说明:访问指定目录中下一个连接的细节原型:struct  dirent*  readdir(DIR  *dirptr);返回值:返回一个指向dirent结构的指

2016-06-18 15:03:42 363

原创 linux系统编程之文件与I/O(二):文件的读取写入

文件的随机读写到目前为止的所有文件访问都是顺序访问。这是因为所有的读和写都从当前文件的偏移位置开始,然后文件偏移值自动地增加到刚好超出读或写结束时的位置,使它为下一次访问作好准备。有个文件偏移这样的机制,在Linux系统中,随机访问就变得很简单,你所需做的只是将当前文件偏移值改变到有关的位置,它将迫使下一次read()或write()发生在这一位置。(除非文件打开时标志有 O_APPE

2016-06-18 15:00:29 863

原创 linux系统编程之文件与I/O(一):文件的打开关闭

一、文件描述符对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息(file结构体)。一个进程启动时,默认打开了3个文件,标准输入、标准输出、标准错误,对应文件描述符是0(STDIN_FILENO)、1(STDOUT_FILENO)

2016-06-18 14:50:07 427

原创 release编译禁用优化选项出现莫名其妙的问题

应该说release下用禁用优化就是坑。这个一般是debug模式下的。不过工程都是release的,看不到调试信息,所以我禁用来看调试信息的

2016-06-18 12:04:22 3342

原创 socket 请求接收完整的一个http响应(设置recv 接收超时选项SO_RCVTIMEO)

#include#include#include //strlen#include#include //inet_addr#include#includeint main(int argc, char *argv []){ int socket_desc; struct sockaddr_in server; char *message; //Create

2016-06-18 11:46:14 1562

原创 System V 共享内存 和 系列函数

以下是几个共享内存函数:#include #include int shmget(key_t key, size_t size, int shmflg);void *shmat(int shmid, const void *shmaddr, int shmflg);int shmdt(const void *shmaddr);int shmctl(int shmid

2016-06-18 11:22:31 266

原创 共享内存简介和mmap 函数

#include#include#include#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while(0)

2016-06-18 11:04:48 314

原创 linux网络编程之System V 消息队列:消息队列实现回射客户/服务器和 msgsnd、msgrcv 函数

#include#include #include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while(0)#define MSGMAX 8192

2016-06-18 10:52:16 441

原创 基于UDP协议的网络程序

#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while (0)void echo_ser(int sock){

2016-06-18 10:32:02 541

原创 epoll

http://blog.csdn.net/jnu_simba/article/details/9075719read_write.hssize_t readn(int fd, void *buf, size_t count) { size_t nleft = count; ssize_t nread; char *bufp = (char *)buf;

2016-06-18 10:20:23 405

原创 poll

1、一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n来调整或者使用setrlimit函数设置, 但一个系统所能打开的最大数也是有限的,跟内存大小有关,可以通过cat /proc/sys/fs/file-max 查看2、select中的fd_set集合容量的限制(FD_SETSIZE,一般为1024) ,这需要重新编译内核。[root@local

2016-06-18 10:01:55 254

原创 select模型

#include#include#include#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while (0)

2016-06-17 17:55:57 275

原创 使用fork并发处理多个client的请求和对等通信p2p

一、在前面讲过的回射客户/服务器程序中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就fork出一个子进程专门服务这个客户端。但是子进程退出时会产生僵尸进程,父进程要注意处理SIGCHLD

2016-06-17 17:41:12 462

原创 使用命令修改注册表键值及权限

很多时候,你可能需要对注册表的某些项进行权限的修改,以便进行管理,如对注册表中的启动项授予只读权限,这样可以避免病毒的感染随开机自动启动(当然这种修改run来自启动的病毒越来越少了,一般现在都是修改驱动)regini命令就是这样一个专门修改键值以及权限的命令。regini命令格式为: regini regini.ini 这个命令需要一个ini文件 ,其中regini.ini的格式为:注册

2016-06-17 17:14:10 12121

原创 GetThreadContext找到程序占用CPU的技巧

#include #include #include #include using namespace std;TCHAR strname[]=TEXT("1.exe"); //程序名称int main (void){ //创建进程 STARTUPINFOA psiStartInfo={0}; //STARTUPINFOW //UNICODE PROCESS_IN

2016-06-17 17:12:53 3794

原创 简单的回射客户/服务器程序 read write

#include#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_FAILURE); \ } while (0)int main(void){

2016-06-17 16:58:04 506

原创 h_errno

#include #include #include #include #include #include #include #include using namespace std;int main(int argc, char *argv []){ char sz [] = "Hello, World!"; //Hover mouse over "sz" while

2016-06-16 15:04:15 986

原创 gethostbyname

#include #include #include #include #include #include #include #include using namespace std;int main(int argc, char *argv []){ char sz [] = "Hello, World!"; //Hover mouse over "sz" while

2016-06-16 11:50:01 314

原创 strerror

#include #include #include #include #include using namespace std;int main(int argc, char *argv[]){ char sz[] = "Hello, World!"; //Hover mouse over "sz" while debugging to see its contents c

2016-06-16 10:11:09 247

原创 gmtime

#include #include #include using namespace std;int main(int argc, char *argv[]){ char sz[] = "Hello, World!"; //Hover mouse over "sz" while debugging to see its contents cout << sz << endl;

2016-06-16 09:58:40 851

原创 简单的TCP通讯

Server代码#include #include #include #include #include int main(int argc, const char * argv []){ struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = hton

2016-06-15 17:11:57 328

OllyDBG 入门系列

OllyDBG 入门系列OllyDBG 入门系列(五)-消息断点及 RUN 跟踪.doc

2013-08-04

寒江独钓——Windows内核安全编程

寒江独钓——Windows内核安全编程.pdf

2013-08-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除