Feb
2
习惯性的用strlen来取得字符串的长度,却不想昨天也在这个上面犯了点粘错误!
原来,对于字符串中含有字节为“0”的话,获取的将是错误的,因为strlen的处理是:
碰到0字节时将直接返回,而不考虑后面是否有值,如下:
00407818 |. 8B41 FC |mov eax,dword ptr ds:[ecx-4]========取字符
0040781B |. 84C0 |test al,al ========判断是否为0了
0040781D |. 74 32 |je short test.00407851 ========是,就只好直接退出了!
原来,对于字符串中含有字节为“0”的话,获取的将是错误的,因为strlen的处理是:
碰到0字节时将直接返回,而不考虑后面是否有值,如下:
00407818 |. 8B41 FC |mov eax,dword ptr ds:[ecx-4]========取字符
0040781B |. 84C0 |test al,al ========判断是否为0了
0040781D |. 74 32 |je short test.00407851 ========是,就只好直接退出了!
Jan
27
引用
1、将以前的一个字符串变形函数,结合变形MD5,对注册进行验证!
2、为了防止爆破,将所有的代码都放到动态申请的内存里运行,同时对原代码进行简单的加密,呵呵!
2、为了防止爆破,将所有的代码都放到动态申请的内存里运行,同时对原代码进行简单的加密,呵呵!
以上两点依然保留,但同时在进行关键比较时:
1、进行两次查表计算后再对比
2、在对比完成后,重新对母表排序!
Jan
26
1、将以前的一个字符串变形函数,结合变形MD5,对注册进行验证!
2、为了防止爆破,将所有的代码都放到动态申请的内存里运行,同时对原代码进行简单的加密,呵呵!
源码与分析先不放出来,等过阵子再放出吧,呵呵!
CM运行如图:
2、为了防止爆破,将所有的代码都放到动态申请的内存里运行,同时对原代码进行简单的加密,呵呵!
源码与分析先不放出来,等过阵子再放出吧,呵呵!
CM运行如图:
Jan
25
这里主要是三个函数一个消息。三个函数分别是:
VOID DragAcceptFiles(HWND hWnd,BOOL fAccept);
UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);
VOID DragFinish(HDROP hDrop);
一个消息是:
WM_DROPFILES
SendMessage( hWndControl, WM_DROPFILES, wParam, lParam );
其中:
wParam的值为(HDROP),而lParam的值则必须为0!
VOID DragAcceptFiles(HWND hWnd,BOOL fAccept);
UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);
VOID DragFinish(HDROP hDrop);
一个消息是:
WM_DROPFILES
SendMessage( hWndControl, WM_DROPFILES, wParam, lParam );
其中:
wParam的值为(HDROP),而lParam的值则必须为0!
Jan
12
文章有些长,里面提到的知识点,有用过的,但太多数还没有接触过!转载到这里,以备参考!
转载自:http://www.ccg.org.cn/bbs/viewthread.php?tid=984&highlight=
#pragma用法大全
C和C++的每个实现对它的主机或操作系统都支持一些独有的特征。
例如, 某些程序须对存放数据的存储器区域进行精确的控制,或必须控制特定函数接受参量的方式。
#pragma指令对每个编译器给出了一个方法,在保持与C和C+ +语言完全兼容的情况下,给出主机或操作系统专有的特征。
依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
转载自:http://www.ccg.org.cn/bbs/viewthread.php?tid=984&highlight=
#pragma用法大全
C和C++的每个实现对它的主机或操作系统都支持一些独有的特征。
例如, 某些程序须对存放数据的存储器区域进行精确的控制,或必须控制特定函数接受参量的方式。
#pragma指令对每个编译器给出了一个方法,在保持与C和C+ +语言完全兼容的情况下,给出主机或操作系统专有的特征。
依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
Jan
10
要求如下:
给定一个2维数组Array[row][col],让其呈螺纹状排列。
如:
数组:Array[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
让其重新排序如下:
E:\Programming\c_cpp>HelixArray
请输入螺旋数组的维数(2维:行--列):4 4
螺旋数组如下:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
给定一个2维数组Array[row][col],让其呈螺纹状排列。
如:
数组:Array[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
让其重新排序如下:
E:\Programming\c_cpp>HelixArray
请输入螺旋数组的维数(2维:行--列):4 4
螺旋数组如下:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
Jan
9
1、开篇说明:
本系列只是我个人对VC/C/C++学习的一个回顾,用以加深自己的印象,所讲述的只是自己的一些理解以及自己在写东西时的一些所得。可能是东一粼西一爪的,让你不着边际!但主体还是从易到能的一个过程,不过最好还是希望大家结合一本教材从头来过的好,呵呵…………
配合的教材,大家可以到网上搜索,相信这方面的资料还是很多的。
具体的,我在这里就不推荐了!
2、所需工具:
我用的是VS 2008及DevC++,大家按自己的条件自行选择,因为在讲C/C++时,我多数是在命令下行采用命令来编译的,如本讲的:
cl HelloWorld /EHsc
可能在后期讲到VC的工程时,才会用到IDE环境
本系列只是我个人对VC/C/C++学习的一个回顾,用以加深自己的印象,所讲述的只是自己的一些理解以及自己在写东西时的一些所得。可能是东一粼西一爪的,让你不着边际!但主体还是从易到能的一个过程,不过最好还是希望大家结合一本教材从头来过的好,呵呵…………
配合的教材,大家可以到网上搜索,相信这方面的资料还是很多的。
具体的,我在这里就不推荐了!
2、所需工具:
我用的是VS 2008及DevC++,大家按自己的条件自行选择,因为在讲C/C++时,我多数是在命令下行采用命令来编译的,如本讲的:
cl HelloWorld /EHsc
可能在后期讲到VC的工程时,才会用到IDE环境
Jan
1
呵呵,时间长了,有些实在是记不住了,就把一些不常用的记在这里吧:
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
我的电脑对__int128不支持,这个可能是预留给将来的吧:
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
我的电脑对__int128不支持,这个可能是预留给将来的吧:
Nov
25
问题是:
公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
以下是 安全矩阵站长 fleshwound 的代码:
公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
以下是 安全矩阵站长 fleshwound 的代码:









