
C++与汇编
文章平均质量分 63
双刃剑客
双刃
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
movw与movt
MOVT 把 16 位立即数放到寄存器的高16位,低 16位不影响转载 2023-06-07 14:43:00 · 1074 阅读 · 0 评论 -
对称加密算法AES之GCM模式简介及在OpenSSL中使用举例
转:https://blog.csdn.net/fengbingchun/article/details/106113185AES(Advanced Encryption Standard)即高级加密标准,由美国国家标准和技术协会(NIST)于2000年公布,它是一种对称加密算法。关于AES的更多介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/100139524AES的GCM(Galois/Counter Mode)模式本质上是AE转载 2021-07-27 17:45:48 · 4598 阅读 · 0 评论 -
va_list 、va_start、 va_arg、 va_end 使用说明
在ANSI C中,这些宏的定义位于stdarg.h中,典型的实现如下:typedef char *va_list;va_start宏,获取可变参数列表的第一个参数的地址(list是类型为va_list的指针,param1是可变参数最左边的参数):#define va_start(list,param1) ( list = (va_list)¶m1+ sizeof(param1) )va_arg宏,获取可变参数的当前参数,返回指定类型并将指针指向下一参数(mode参数描述了.转载 2020-12-30 11:29:52 · 1245 阅读 · 1 评论 -
c++ const 转非const
#include <iostream>#include <stdio.h>using namespace std;struct DexHeader{ int off;};int main(){ struct DexHeader dexHeader; dexHeader.off = 3; const DexHeader* lpDexHeader = &...原创 2019-12-30 16:37:32 · 5202 阅读 · 0 评论 -
工作一些C++总结
1.C++中的DLL函数接口不要用string&和CString&作为参数类型,要用CHAR*,WCHAR*,或者TCHAR*.否则会发生堆内存错误.(知道原因的可以告诉我哈,想不明白原因.)2.C++类的静态成员函数不可以调用类的成员函数和类的数据成员.但类的成员函数可以调用类的静态成员函数.(我的想法是类的静态函数调用时,类不一定有对象.应该是和this指针有关.)3.DLL尽量不要导原创 2009-07-23 21:27:00 · 521 阅读 · 0 评论 -
fatal error LNK1103: debugging information corrupt; recompile module
目前在编译gh0st.exe程序的CJ60Lib项目中,出现如下提示:gh0st.exe的Debug工程属性可以自己加上,新建一个工程,比对编译与链接选项.fatal error LNK1103: debugging information corrupt; reco原创 2011-10-19 00:27:57 · 950 阅读 · 0 评论 -
在 MapPath 的 Path 参数中不允许字符 '..'的错误的解决办法
转:http://hi.baidu.com/elsand/blog/item/6f37f603d26546054afb51f9.html首先是HTTP 500 内部服务器错误这个问题可能是由于你的网站程序代码有问题,你可以在你的浏览器中做如下设置:“打开IE浏览器---工具---Internet选项---高级---显示友好HTTP错误信息”将这个选项前面的勾去掉,然后再访问你的网站转载 2011-11-27 17:46:30 · 2410 阅读 · 0 评论 -
条款42: 明智地使用私有继承
条款42: 明智地使用私有继承条款35说明,C++将公有继承视为 "是一个" 的关系。它是通过这个例子来证实的:假如某个类层次结构中,Student类从Person类公有继承,为了使某个函数成功调用,编译器可以在必要时隐式地将Student转换为Person。这个例子很值得再看一遍,只是现在,公有继承换成了私有继承:class Person { ... };class Student:转载 2012-01-30 14:08:17 · 1921 阅读 · 0 评论 -
C#面向对象设计模式纵横谈:Bridge 桥接模式
转: http://kb.cnblogs.com/page/79503/抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办? 举例来说 假如我们需要开发一个同时支持PC和手机的坦克游戏,游戏在PC和手机上功能都一样,都有同样的类型,面临同样的功能需求变化,比如坦克可能有很多种不转载 2012-03-25 17:24:47 · 2327 阅读 · 0 评论 -
利用ida对程序的静态链接库进行处理(转)
转:http://seckungfu.com/blog/2012/07/14/li-yong-idadui-cheng-xu-de-jing-tai-lian-jie-ku-jin-xing-chu-li/利用ida对程序的静态链接库进行处理用IDA进行反汇编时最怕遇到的就是跟踪到了程序静态链接的库函数中,看得一头雾水不说,还浪费了大量的时间。其实如果有符号表的话,看看函数名就知道转载 2012-12-28 11:02:32 · 6992 阅读 · 0 评论 -
一篇在程序还未结束运行时就能把自身删除的文章(2千字)
转载部分:标 题:一篇在程序还未结束运行时就能把自身删除的文章(2千字)发信人:WinDos2K时 间:2002-2-7 16:02:05 详细信息:下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手.下面就分析一些他的这段代码.这段代码在PROCE原创 2013-03-05 00:09:55 · 950 阅读 · 0 评论 -
转:IDA自定义结构体快捷键操作方法
简单记录下,有时在分析漏洞时,以特定结构体去解析数据,更便于准确定位漏洞成因,尤其是文件格式的漏洞。 1、Shift + F1:打开本地类型;2、insert:插入自定义的结构体;3、Shift + F9:打开结构体;4、Insert:添加上面创建的结构体;5、选取相应数据,Alt + Q 将其上面的结构体进行解析 注:ALT+Q 只能识别到结构体窗口(shif转载 2013-03-21 16:11:04 · 3499 阅读 · 0 评论 -
(转http://hi.baidu.com/adoblog/blog/item/102574233779ba4a925807c0.html):Vector发现的一个使用细节:vector iterators incompatible
<br />以前使用VC6开发,最近换用VS2005编译以前的程序,在运行时出现断言,切回 调试器,发现提示是<br /><br />"vector iterators incompatible”<br /><br />发现引发这个错误的代码如下:<br /><br /><br /><br />VectorType::iterator it = someVector.begin();<br />for (; it != someVector.end();)<br />{<br />i转载 2010-11-24 21:18:00 · 889 阅读 · 0 评论 -
_stdcall,_cdecl,_fastcall区别与联系
<br />_stdcall 与 _cdecl 的区别<br />几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除??如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编译器产生栈的方式不尽相同,那么调用者能否正常的完成原创 2010-11-01 23:36:00 · 601 阅读 · 0 评论 -
apache模块 多线程编程
<br />用QT编写两个线程,然后在编写的Apache Module跑了一会儿,竟然程序崩溃了.看了资料,估计是和apr_pool_t有关.先把资料放在这里.<br />/** * apr tutorial sample code * http://dev.ariel-networks.com/apr/ */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <stdlib.h>原创 2010-12-08 23:37:00 · 1812 阅读 · 0 评论 -
#pragma 与数据段
增加一个共享数据段 //创建数据段#pragma data_seg("段名(不大于8字节)")数据(注意一定要初始化)#pragma data_seg()//设置READ WRITE SHARE属性#pragma comment(linker,"/section:段名, RWS")原创 2009-05-10 23:22:00 · 713 阅读 · 0 评论 -
在当前程序目录下创建错误日记文件
一个小小的功能,也是需要时间和精力啊奋斗的结果#include #include "Shlwapi.h"#include #include #pragma comment(lib,"Shlwapi.lib")using namespace std;int main(int argc, char** argv){ TCHAR szExeFile[MAX_PAT原创 2009-05-18 23:59:00 · 1065 阅读 · 0 评论 -
简单监控程序
主要API FindFirstChangeNotification()WaitForSingleObject()FindNextChangeNotification()FindCloseChangeNotification(); #include #include #include using namespace std;int main(int原创 2009-05-25 22:26:00 · 559 阅读 · 1 评论 -
用C写的验证是否是PE有效文件
#include #include #define FILE_ABSOLUTE_PATH "d://warcraft3.exe"int main(int argc,char* argv[]){ HANDLE hFile =CreateFile(FILE_ABSOLUTE_PATH,GENERIC_READ,FILE_SHARE_READ, NUL原创 2009-07-07 23:12:00 · 959 阅读 · 0 评论 -
作业,进程,线程
作业是进程的容器,而且是个有进无出的容器.(不可以让一个进程退出容器,进程创建的子进程与作业可以无关,需要设置SetInformationJobObject)既然是个容器,那进程必然要受到作业的限制.有基本限制,扩展限制,UI限制,安全限制.相关的API如下: IsProcessInJob 要把一个进程加入作业,事先最好判断下. CreateJo原创 2009-07-09 22:36:00 · 964 阅读 · 0 评论 -
if( **|| ** || ** || ** || )的变种
不知道大家在写程序的时候会不会用if( **|| ** || ** || ** || )来判断某一条件符合呢?例如if( strPicFormat == _T(".gif") || strPicFormat == _T(".png") || strPicFormat == _T(".jpg") || ....){}这样的语句。这样的代码看起来非常的冗长,而且如果多处使用一样的代码原创 2009-09-20 21:14:00 · 697 阅读 · 2 评论 -
vc中ShellExecute的使用方法
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。 WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW); ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。 首先必须引用s转载 2009-09-24 22:05:00 · 2097 阅读 · 0 评论 -
线程同步的方法
<br />Win32一个最容易的同步机制是critical sections,用来处理一份共享之资源。Critical Sections并不是核心对象,存在于进程的内存空间中。<br />InitializeCriticalSection(),EnterCriticalSection(),LeaveCriticalSection(),DeleteCriticalSection(),你应该在每一个存取全局数据的地方使用<br />Enter/Leave函数。一旦一个线程进入一个Critical Se原创 2010-09-23 22:25:00 · 720 阅读 · 0 评论 -
ARM汇编指令
ARM汇编指令ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。一、跳转指令跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令;Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任转载 2013-05-02 11:38:31 · 1333 阅读 · 0 评论 -
(*(void(*)())0)();语句的理解
void(*fp)(); fp是一个指向返回值为void类型的函数的指针。(*fp)(); 调用函数。 将常数0转型为 "指向返回值为void类型的函数的指针",可以这样写(void(*)())0.可以用(void(*)())0替换fp,从而调用函数得到。(* (void(*)())0 )(); 简洁的写法typedef void (*funcpt原创 2013-06-05 14:30:12 · 672 阅读 · 0 评论 -
类的逆向分析
类的权限控制只是编译器的产物,在汇编层次无法体现 类的构造函数VC特征1.调用时,传递this指针。例如:lea ecx, [ebp+testb] ; this2.函数内部,先处理this指针。例如:mov [ebp+this], ecx3.若是有虚函数,则虚函数表赋值.例如:mov dword ptr [eax], offset ??_7CTest原创 2013-06-06 20:21:40 · 863 阅读 · 0 评论 -
使用C++实现SDK之WebBrowser容器
转:http://blog.csdn.net/norsd/article/details/2921389一.由来 我还记还得当自认为学习完了C++语法后, 兴致勃勃的打开MFC向导,开始所谓"MFC高级自动化编程"时, 我不由喊道: 这他妈的都是些什么乱七八糟的东西啊.诚然,MFC为了方便愚蠢的程序员,的确是让人瞬间高级编程, 可是愚蠢的我们还是会用CStr转载 2016-06-08 18:17:19 · 1869 阅读 · 0 评论 -
VC中程序调用Js自定义函数的注意事项
转:http://blog.csdn.net/norsd/article/details/4770414关于如何在程序中调用js函数, 网络上已经泛滥多时了.下面这个链接是这方面的鼻祖了,大家可以看看.http://www.codeproject.com/KB/COM/jscalls.aspx?msg=1162277 一般说来,调用js函数多数是转载 2016-06-08 18:20:27 · 734 阅读 · 0 评论 -
如何让 WebBrowser控件 使用BeforeNavigate2(...)屏蔽特定页面
转:http://blog.csdn.net/norsd/article/details/3499371这是俺提问的一个帖子,如下:norsd等级:可用分等级:贫农总技术分:932总技术分排名:20992结帖率:100.00%BeforeNavigate2(...) 中的参数 *Cancel=VARIANT_TRUE, 取消导航后,无转载 2016-06-08 18:22:48 · 2123 阅读 · 0 评论 -
抓取淘宝商品价格人气-http://hws.m.taobao.com/cache/wdetail/5.0
转:http://blog.csdn.net/leiflyy/article/details/50611731php实现抓取淘宝商品价格人气源码闲着没事做的这么个小东西,没想到还真有人联系我,而且不止一个,第一次感觉到自己的代码有了价值,于是我决定先小更新一下,加了获取图片的功能/** * Created by PhpStorm. * User: leif转载 2016-06-14 00:25:58 · 13661 阅读 · 1 评论 -
CString的MakeLower 特殊情况(乱码)下,转化会出错
测试代码如下: char szText[256] = {0xA6,0xA7,0xA8,0xA9}; /* char szText[256] = {0}; for (int nIndex = 1; nIndex < 256; nIndex++) { szText[nIndex - 1] = (char)nIndex; } */ CString strText = szText;原创 2016-06-21 14:11:01 · 1614 阅读 · 0 评论 -
_snprintf_s()函数的正确用法
_snprintf_s()函数的n代表最多复制多少个字符,函数名尾部_s表示检测缓冲区溢出,微软特有的检测。正确用法如下: char szTable[27] = "abcdefghijklmnopqrstuvwxyz"; char szBuffer[10] = { 0 }; //将会崩溃,因为会发生缓冲区溢出 //_snprintf_s(szBuffer, sizeof(szBu原创 2016-07-21 19:44:55 · 40581 阅读 · 16 评论 -
VS2010编译OpenSSL
OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用。对于一般的开发人员而言,在http://slproweb.com/products/Win32OpenSSL.html 上下载已经编译好的OpenSSL库是省力省事的好办法。对于高级的开发用户,他们可能需要适当的修改或者裁原创 2016-10-14 15:18:04 · 549 阅读 · 0 评论 -
VC 2012 visualstudio的项目属性表 .props文件
http://www.haogongju.NET/art/2390335最近发现一个有趣的东西:visual studio的项目属性表我下载了cocos2d-x-3.0alpha1,然后发现HelloLua项目配置里没有配include搜索目录和依赖库以及一个Marco $(EngineRoot),但是编译的时候居然不报错。经查找发现在coc转载 2016-12-27 12:00:17 · 1626 阅读 · 0 评论 -
WebBrowser介绍——Javascript与C++互操作
WebBrowser控件是Microsoft提供的一个用于网页浏览的客户端控件,WebBrowser控件的使用相当广泛,例如很多邮件客户端都是使用可编辑的WebBrowser控件作为写邮件的工具,也有很多软件用WebBrowser控件弹出网页,如qq的新闻首页。微软的MFC和.NET都有WebBrowser控件,这两个控件虽然容易上手,不过由于包装的太好,所以很难深入。因此本文介绍的Web转载 2016-06-08 18:13:10 · 577 阅读 · 0 评论 -
CreateProcessW的参数陷阱
CreateProcessW的参数陷阱今天一个朋友提到以前在DELPHI 7中运行正常的CreateProcess代码在XE2总是报内存地址非法写入错误。当时调试了一下,果真如此,颇感奇怪,于是祭出MSDN宝典一查,才发现其中端倪。MSDN原文部分摘录如下。BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplication转载 2016-04-24 23:13:01 · 3911 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数转载 2015-06-03 20:18:52 · 484 阅读 · 0 评论 -
位域(bit fields)简介
z1、简介 位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以转载 2014-04-08 14:51:58 · 988 阅读 · 1 评论 -
[转载]基于Cookie的安全检查机制
转自:http://kb.cnblogs.com/a/1439184/Buffer Overrun定义 buffer是程序用来存储数据的连续内存区域,一旦分配完成,其起始地址和大小便固定下来。程序运行过程中,如果使用了超出buffer的区域,那么就发生了buffer overflow(缓冲区溢出)或者buffer overrun(缓冲区越界)。如果该缓冲区分配转载 2014-04-24 14:27:55 · 959 阅读 · 1 评论 -
#ifdef __cplusplus深度剖析
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话转载 2014-06-03 14:39:56 · 732 阅读 · 1 评论