摘要:
各进制结尾标志: 汇编的预定义符号的前面是@为前缀,所以我们应该要避免@开头的符号例如 字母,_,等开头伪指令:伪指令是内嵌在程序源代码中,由汇编器识别并执行相应动作的命令。与真正的指令不同,伪指令在程序运行时并不执行。伪指令可用于定义变量、宏以及过程, 可用于命名段以及执行许多其他与汇编器相关的簿 阅读全文
摘要:
2.攻击序列号保护:2.1跟踪输入注册码之后的判断,从而找到注册码。一般都是在一个编辑框中输入注册码,软件需要调用一些标准的API 将编辑框中输入的注册码字符串拷贝到自己的缓冲区中。利用调试器提供的针对API 设断点的功能,就有可能找到判断注册码的地方。这些常用的API 包括GetWindowTex 阅读全文
摘要:
1.管道是通过IO接口存取得字节流, windows中利用得是ReadFile()和WriteFile(),windows利用单一句柄支持双向IO,命名管道也称做FIFO(first in first out)命名管道得机制:一个进程把数据放到管道里,另一个知道管道名字得进程把数据把取走,实际是用于 阅读全文
摘要:
地址在C++ 中,地址标号使用十六进制表示。取一个变量的地址使用“&”符号,只有变量才存在内存地址,常量没有地址(不包括const定义的伪常量)。例如,对于数字100,我们无法取出它的地址。取出的地址是一-个常量值,无法再对其取地址了。2.指针指针的定义使用“TYPE*",TYPE 为数据类型,任何 阅读全文
摘要:
导入表和导出表是联合使用的!!!大部分的dll有导出表,很少的EXE文件才有导出表 windows装载器在进行PE装载时候,会将导入表中登记的所有DLL一并装入,然后根据DLL的导出表中对导入函数的描述修正导入表的IAT值, 通过导出表,DLL文件向调用它的程序或者系统提供导出函数的名称,序号,以及 阅读全文
摘要:
1.互斥体(互斥体类似于同步事件)互斥体可避免多个线程争夺一个资源的问题,多线程环境下,如果一个线程获得互斥体,不释放的话其他的线程就获得不了该资源它与同步事件的区别:是在同一个线程内它可以递归获得互斥体,也就是这个线程获得互斥体后对再次去获得认可不排斥,同步我们显而易见的得知不允许这样他有激发未激 阅读全文
摘要:
3.信号灯(重点是记住什么样是激发什么样称为未激发)信号灯有两种状态,激发和未激发状态,信号灯内部有个计数器,可以理解信号灯内部有N个灯泡,如果有一个灯泡亮着,表示信号灯处于激发状态,如果全部熄灭,信号灯就是处于未激发状态同样的信号灯的使用也需要初始化它利用的是CreateSemaphore(SEC 阅读全文
摘要:
事件(和WaitForSingleObject等待函数配套)如果我们要用事件一定记住的是利用CreateEvent(LPSECURITY,BOOL(手动or自动),BOOL(初始状态),LPCTSTR(NAME)) 初始化事件对于第二参数的手动还是自动选择自动就行,因为手动的话遇到WaitForSi 阅读全文
摘要:
中断和异常的目的: 为了让CPU能够暂停当前的任务,转去处理突发事件或者其他需要处理的任务,于是设计了中断interrupt跟异常exception机制。1. 中断 中断通常是CPU外部的输入输出设备(硬件)触发的,供外部设备通知CPU有事情需要处理,因此又叫做中断请求,中断请求的目的是希望CPU暂 阅读全文
摘要:
软件断点:断点异常(INT 3) 属于陷阱类异常,当CPU 产生异常时候,其程序指针是指向导致异常的下一条指令,但是我们观察到的是却指向当前的导致异常的这条指令(想计算机组成原理的实验 IP)原因:在中断到调试器的时候,会把所有断点位置恢复成原先的指令,再交给用户也就是DEC ebx 2.当我们设置 阅读全文