![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自我修养
文章平均质量分 78
小菜鸡今天学习了嘛
正在学习iOS的小菜鸡,请多多指教
展开
-
【DUMP】蓝屏终止
蓝屏蓝屏是Windows中用于提示严重的系统级错误的一种方式,其出现时整个屏幕的背景为蓝色。蓝屏一旦出现,Windows系统便宣告终止,只有重新启动才能恢复到桌面环境。因此蓝屏又被称为蓝屏终止(Blue Screen Of Death,BSOD)。蓝屏机制的设计思想将系统终止在导致错误的第一现场,并且把这个现场的信息显示给用户或永远保存下来(比如保存到转储文件),这样有力于更快地发现问题根...原创 2019-08-17 16:42:26 · 983 阅读 · 0 评论 -
静态分析技术
程序静态分析是一种在不执行程序的情况下对程序行为进行分析的理论、技术,简称为静态分析。程序动态分析则是另一种程序分析策略,它需要实际执行程序。静态分析这一术语一般用来形容邹东华工具的分析,而人工分析则往往叫做程序理解。所谓静态分析,就是从反汇编出来的程序清单上分析程序流程,了解模块完成的功能。形式化方法程序分析中的形式化方法一般指利用纯粹严格的数学方法对软件、硬件进行分析的理论及技术...原创 2019-06-11 09:19:05 · 3529 阅读 · 1 评论 -
加密算法(一)DES算法
DES算法DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。其密钥长度为56位,明文按64位进行分组,将分组后的明文和56位密钥按位替代或交换的方式形成密文组的加密算法。DES加密算法的特点:分组比较短密钥太短密码生命周期短运算速度慢DES算法描述:其置换规则:逆置换:初始置的逆运算。比如,初始换位时,把第1为换到了第50位,那么在逆置换时,把第50位换回...原创 2019-06-20 09:02:20 · 466 阅读 · 0 评论 -
加密与解密(三)-- dump抓取内存映像文件
使用情况在特定时刻,将整个存储装置或存储装置中的某部分的内容记录到另一个存储装置中。其目的一般是为了除错将具备可读格式的数据,从主要或辅助存储体复制带外部媒体。比如:磁带、磁盘或打印机等媒体为收集错误信息而复制整个虚拟存储体或其中的部分内容dump程序要做的事情通常分为以下几步:在系统中找到目标进程在晋城中确定目标进程的大小 imagesize把目标进程中的数据保存到文件实...原创 2019-06-03 22:47:05 · 2192 阅读 · 0 评论 -
结构化异常处理(SEH)二
异常处理final型异常处理线程相关的异常处理传递给异常处理句柄的参数异常处理的参数有四个:pExcept – EXCEPTIONN_RECORD结构的指针pErr – ERR结构的指针pContext – CONTEXT结构的指针pDispatch1、 EXCEPTION_RECORD结构的定义typedef struct _EXCEPTION_RECOR...原创 2019-06-10 09:15:36 · 119 阅读 · 0 评论 -
系列号保护方式、警告窗口、时间限制
软件验证序列号的合法性过程,其实就是验证用户名和序列号之间的换算关系是否正确地过程。序列号的验证最基本的方法有:按用户输入的姓名来生成注册码,再同用户输入的注册码比较通过注册码来验证用户名的正确性如何攻击序列号保护要找到序列号或者修改掉判断序列号之后的跳转指令,最重要的是要利用各种工具定位判断序列号的代码段。常用API包括:GetDlgItemInt、GetDlgItemText...原创 2019-06-19 09:05:09 · 130 阅读 · 0 评论 -
加密与解密(二)-- 脱壳_1
问题脱壳的流程?查壳软件FileInfoPeid脱壳脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程:查壳寻找OEPDump修复脱壳软件aspack壳 脱壳可用unaspack或casper unaspackcasprupx壳 脱壳用upxPECompact壳 脱壳用unpecompactprocdump 万能脱壳但不精,一般不要用...原创 2019-06-02 22:16:57 · 433 阅读 · 0 评论 -
结构化异常处理(SEH) 一
SEH结构化异常处理(Structured Exception Handing)是Windows操作系统处理程序错误或异常的技术。SEH是操作系统的一种系统机制,与特定的程序设计语言无关。发生异常时系统的处理顺序系统首先判断异常是否应发送给目标程序异常处理例程【如果决定应该发送,并且目标陈晓旭正在被调试,则系统挂起程序并向调试器发送EXCEPTION_DEBUG_EVENT消息。这个可以...原创 2019-06-08 09:17:20 · 336 阅读 · 0 评论 -
一些问题的整理【持续更新】
一 、 使用虚拟地址空间的好处是什么?让每个进程拥有了相同的、独立内存空间,相互之间不会干扰读写内存更安全。由于系统和MMU的限制,使得进程无法操作到其他进程的数据。不连续的物理空间可以映射成连续的虚拟地址空间进程分配的内存空间只有在实际使用时,才会触发缺页异常来分配实际物理空间,从而最大程度减少了内存空间的浪费。【MMU:Memory Management Unit的缩写,中文名是内...原创 2019-05-29 23:07:25 · 191 阅读 · 0 评论 -
加密与解密(四)重建输入表
PE文件运行时,Windows系统加载器首先搜索OriginalFirstThunk,如果存在,装载程序迭代搜索数组中的每个指针,找到IMAGE_IMPORT_BY_NAME结构所指向的输入函数的地址,然后用函数入口地址来替代由FirstThunk指向 的IMAGE_THUNK_DATA数组里的元素值(即用真实的函数地址填充到IAT里)**如果程序加壳了,那么壳自己模仿Windows装载器的工...原创 2019-06-05 09:12:22 · 376 阅读 · 0 评论 -
动态分析技术
常用Win32 API窗口管理类窗口通用控制类SHELL特性类图形设备接口(GDI)系统服务类国际特性类网络服务类工具OllyDBGSOFTICETRW2000原创 2019-06-12 08:58:55 · 587 阅读 · 0 评论 -
加密算法(二)3DES算法、RC4算法
3DES算法3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密3DES是DES向AES过渡的加密算法,是DES的一个更安全的变形。Ek()代表加密,Dk()代表解密,k代表密钥、P代表明文、C代表密表3DES加密过程:C = Ek3( Dk2( Ek1§ ) )3DES解密过程:P = Dk1( Ek2( Dk3© ) )k1和k3可以根据数据对安全性的...原创 2019-06-24 08:56:51 · 1282 阅读 · 0 评论 -
日志
日志日志就是软件为自己写的日记,每一条日志记录用来记叙一件事。日志包含的元素一般有(有点像写记叙文的几大元素=.=):时间:所记录时间的发生时间,通常至少精确到分钟级别。地点:用来定位所记录事件发生时的“位置信息”,通常包括机器名(本机记录的话可以省略),进程ID、线程ID等。主题(来源):即该事件的实施者,根据需要可以是服务名称、模块名称或类名和函数名。事件:对所发生的事件的描述...原创 2019-08-21 11:55:07 · 190 阅读 · 0 评论 -
【Message】程序提示
弹窗提示MessageBox声音提示MessageBeep,这个API调用的提示音是系统提示音WINUSERAPIBOOLWINAPIMessageBeep( __in UINT uType);#endif /* !NOMB */参数:#define MB_OK 0x00000000L#define MB_ICONHAN...原创 2019-08-19 17:14:47 · 311 阅读 · 0 评论 -
【DUMP】系统转储文件
分类完整转储内核转储小型内存转储以上三种类型的文件大小依次递减,包含的信息量也是依次递减。完整转储包含产生转储时物理内存中的所有数据,其文件大小通常比物理内存的容量还要大内核转储去除了用...原创 2019-08-19 16:40:32 · 920 阅读 · 0 评论 -
双机联调
双机联调环境构建双机联调--让目标机强行蓝屏/重启环境构建一、 双机联调涉及的工具VirtualKD、Windbg工具下载地址:VirtualKD:http://virtualkd.sysprogs.org/二、 环境配置1、 VirtualKD配置:下载文件到本地,解压之后的文件夹中,有一个target文件夹。把这个文件夹copy到虚拟机,然后在虚拟机里运行该目录下的vmin...原创 2019-08-07 15:42:01 · 237 阅读 · 0 评论 -
【环境变量】普通情况环境变量&SYSTEM权限下获取User权限的环境变量
获取环境变量的常用APISHGetSpecialFolderPathBOOL SHGetSpecialFolderPathA( HWND hwnd, //保留 LPSTR pszPath, //指向以null结尾的字符串的指针,该字符串接收指定文件夹的驱动器和路径。此缓冲区的大小必须至少为MAX_PATH个字符。 int csidl, //一个CSIDL值,用于...原创 2019-07-30 20:41:59 · 865 阅读 · 0 评论 -
【转】MD5算法原理及其实现
什么是MD5算法MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。MD5功能输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);不同的输入得到的不同的结果(唯一性);MD5属不属于加密算法认为不属于的人是因为他...转载 2019-07-19 22:00:54 · 183 阅读 · 0 评论 -
获取系统的详细类型
BOOL GetOperatingSystemName(LPTSTR pszOS){ OSVERSIONINFOEX osvi; COSChecker::GetVersionStruct(osvi); SYSTEM_INFO si; GetSystemInfo(&si); if ( VER_PLATFORM_WIN32_NT==osvi.dwPlatformId ...原创 2019-07-19 21:56:43 · 164 阅读 · 0 评论 -
加密与解密(六)-- 解密
常用解密方式爆破方式爆破方式就是通过修改程序流程来达到解密注册保护方式的目的,即指通过静态分析的过程。跟踪注册过程及写出注册机常见解密阶段爆破阶段追出非明码比较的注册码【它们通常多为多条件和计算型形式】做出通用的注册机学习掌握一定的密码学知识,并了解常见的公共加密算法,做出利用成熟加密算法或密码学原理加密软件的注册机或提出解决方法国内软件主要加解密方法软解密针对...原创 2019-06-07 09:05:54 · 128 阅读 · 0 评论 -
加密与解密(一) -- 壳、加壳
问题1、 什么是壳?它是干嘛的?2、 有哪些壳类型?3、 壳是怎么加载的?4、一些可用的壳类型判断和脱壳软件的使用什么是壳?加壳的目的:为了隐藏程序真正的OEP(入口点),防止被破解。加壳软件是一种在编译好可执行文件之后,为了一些特定的需求,而做的一些事情,常见需求有:有一些版权信息需要保护起来,不想让别人随便改动为了让程序小一点,从而方便使用(把可执行文件进行压缩使用)...原创 2019-06-01 18:55:24 · 7032 阅读 · 0 评论 -
加密与解密(五)-- 密码、加密
问题1、 密码的存在意义?2、 加密算法有哪些?密码、密码学密码:通信双方按照约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换(解密)密码体制可以分为以下几种:错乱 – 按照规定的图形和线路,改变明文字母或数码等的位置称为密文代替 – 用一个或多个代替表将明文字母或数码等的位置代替为密文密本 – 用预先编订的字母或...原创 2019-06-06 09:12:39 · 1121 阅读 · 0 评论 -
程序员的自我修养(七)静态链接--COMMON块
弱符号机制允许同一个符号的定义存在于多个文件中。目前的链接器本身并不支持符号的类型,即变量类型对于链接器来说是透明的,它只知道一个符号的名字,并不知道类型是否一致。多个符号(同名)定义类型不一致的几种情况两个或两个以上强符号类型不一致【非法,报错】有一个强符号,其他都是弱符号,出现类型不一致两个或两个以上弱符号类型不一致编译器将未初始化的全局变量定义作为弱符号处理。COMMON类...原创 2019-05-07 22:40:39 · 218 阅读 · 0 评论 -
程序员的自我修养(十二) -- Linux共享库
共享库从文件结构上来看,共享库和共享对象没什么区别,Linux下的共享库就是欧通的ELF共享对象。共享库的更新有两类:兼容更新不兼容更新版本命名:libname.so.x.y.zx:主版本号 //库的重大升级,不同主版本号之间是不兼容的y:次版本号 //库的增量升级。向下兼容z:发布版本号 //表示库的一些错误修正、性能的改进等,并不添加新的接口,也不对接口进行更改。相同主...原创 2019-05-19 22:20:46 · 109 阅读 · 0 评论 -
程序员的自我修养(六)静态链接--符号解析与重定位
符号解析与重定位是静态链接的核心内容。重定位重定位表重定位表专门用来保存与重定位相关的信息,它在ELF文件中往往是一个或多个段。对于可重定位的ELF文件来说,它必须包含有重定位表,用来描述如何修改相应地段里的内容。对于每个要被重定位的ELF段都有一个对应的重定位表,而一个重定位表往往是ELF文件种的一个段,所以重定位表也被叫做重定位段。用objdump -r XXX.o查看目标...原创 2019-05-06 22:39:08 · 305 阅读 · 0 评论 -
程序员的自我修养(十一) -- 动态链接步骤和实现
动态链接的步骤启动动态链接器本身装载所有需要的共享对象重定位和初始化动态链接器自举动态链接器本身也是一个共享对象,但是它有一些特殊性:动态链接器本身不可以依赖其他任何共享对象动态链接器本身所需要的全局和静态变量的重定位工作由它本身完成==》这一点就用到了自举自举是什么?它是一种具有一定限制条件的启动代码动态链接器的入口地址即自举代码的入口,当操作系统将进程控制权交给动态...原创 2019-05-18 23:07:24 · 256 阅读 · 0 评论 -
程序员的自我修养(九)虚拟内存空间
进程的虚拟地址每个程序被运行起来以后,它将拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小由计算机的硬件平台决定(具体的说是由CPU的位数决定)对于Linux系统来说,它的进程虚拟空间的划分:1GB–操作系统,3GB–进程对于Windows系统:2GB–操作系统,2GB–进程装载的方式覆盖装入页映射进程的建立创建一个独立的虚拟地址空间读取可执行文件头,并建立虚...原创 2019-05-13 23:09:21 · 228 阅读 · 1 评论 -
程序员的自我修养(八)静态链接--其他
C++相关重复代码消除 为了避免:空间浪费地址较容易出错指令运行效率低函数级别链接(Functional-Level Linking,/Gy):让所有的函数都单独保存在一个段里,当链接器必须要用到某个函数时,就将它合并到输出文件中,对于那些没用的函数则将它抛弃。==》可以很大程度上减小输出文件的长度,减少空间浪费;缺点:会减慢编译好链接过程,目标函数短的数量大大增加,重定位过程也会因...原创 2019-05-08 23:08:03 · 140 阅读 · 0 评论 -
程序员的自我修养(五)静态链接--空间与地址分配
对于链接器来说,整个链接过程中,它就是将几个输入目标文件加工后合成一个输出文件。输出文件中的空间如何分配给输入文件按序叠加将输入的目标文件按照次序依次叠加起来。缺点:在由很多输入文件的情况下,输出文件将会有很多零散的段。==》浪费很多空间,因为每个段都有一定的地址和空间对齐要求。相似段合并将相同性质的段合并到一起。链接器为目标文件分配地址和空间中的“地址和空间”含义:在输出的可执...原创 2019-05-05 22:29:31 · 175 阅读 · 0 评论 -
程序员的自我修养(四)目标文件格式
//2019.5.2PC平台流行的可执行文件存储格式:Windows:PELinux:ELF可执行文件(Windows的.exe和Linux的ELF可执行文件)、动态链接库(Windows的.dll和Linux的.so)、静态链接库(Windows的.lib和Linux的.a)都是按照可执行文件格式存储在Windows平台下,按照PE-COFF格式存储在Linux平台下,按照ELF格式...原创 2019-05-02 23:27:02 · 313 阅读 · 0 评论 -
程序员的自我修养(十三)-- 程序的内存布局
应用程序使用的(常用)内存空间里有如下区域:栈 : 用于维护函数调用的上下文堆 : 用于容纳应用程序动态分配的内存区域可执行文件映射 : 存储可执行文件在内存里的映像保留区 : 对内存中受到保护而禁止访问的内存区域的总称动态链接库映射区:用于映射装载的动态链接库Q&A:段错误(segment fault)出现的原因:【对指针的非法引用,有些地址是读写受限的】1) 将指...原创 2019-05-20 23:35:51 · 156 阅读 · 0 评论 -
程序员的自我修养(十)动态链接
动态链接其实就是把链接的过程推迟到了运行时再进行。特点解决了共享的目标文件多个副本浪费磁盘和空间的问题可以动态地选择加载各种程序模块【程序可扩展性和兼容性】动态链接的基本实现...原创 2019-05-15 23:02:24 · 210 阅读 · 1 评论 -
程序员的自我修养(十六) -- 系统调用与API
系统调用系统调用是应用程序(包括运行库)与操作系统内核之间的接口,它决定了应用程序是如何与内核打交道的。为了让应用程序有能力访问系统资源,也为了让程序借助操作系统做一些必须由操作系统支持的行为,每个操作系统都会提供一套接口,这些接口往往是通过中断来实现的。Windows采用0x2E号中断作为系统调用入口Linux采用0x80号中断作为系统调用的入口系统调用支持的范围程序运行所...原创 2019-05-24 23:43:27 · 146 阅读 · 0 评论 -
共享内存
共享内存,就是允许两个不想管的进程访问同一个逻辑内存。共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间工厂的内存通常是同一块物理内存。进程可以将同一段物理内存连接到它们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到访问同一段共享内存的任何其他进程。共享内存并未提供同步机制,因此我们通常需要...原创 2019-05-28 23:16:10 · 86 阅读 · 0 评论 -
程序员的自我修养(十五)-线程 - TLS
1、 线程局部存储(TLS)实现实现线程私有关键字:对于GCC:__thread对于MSVC:__declspec(thread)2、 线程环境块(TEB)保存线程的堆栈信息、线程ID等CreateThread()和_beginthread()有什么不同?_beginthread()是对CreateThread()的包装,它最终还是调用CreateThread()来创建线程...原创 2019-05-23 23:19:57 · 115 阅读 · 0 评论 -
信号
信号是一种软件终端,它提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式信号来源1、硬件方式用户按下中断的某些键硬件异常产生信号:除0操作、访问非法空间等2、软件方式用户在终端调用kill命令向进程发送任意信号进程调用kill或sigqueue函数发送信号检测到某种条件发生时信号相关的几个函数signal函数1、 signal函数用来设置进程在接收到信号时...原创 2019-05-27 22:44:51 · 130 阅读 · 0 评论 -
程序员的自我修养(十四)--入口函数和运行库
入口函数和程序初始化入口函数/入口点程序的入口点实际上是一个程序的初始化和结束部分,它往往是运行库的一部分。一个典型的程序运行步骤大概如下:操作系统在创建进程之后,把控制权交给程序的入口,这个入口往往是运行库中某个入口函数入口函数堆运行库和程序运行环境进行初始化,包括堆、I/O、线程、全局变量构造等等入口函数在完成初始化之后,调用main函数,正式开始执行程序主体部分GLIBC入...原创 2019-05-22 22:53:42 · 163 阅读 · 0 评论 -
进程间通信 -- 管道
管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。管道分为匿名管道和命名管道:匿名管道只能在父子进程间进行通信,不能在网络间通信,而且数据传输是单向的,只能一端写,另一端读。命令管道可以在任意进程间通信,通信是双向的,任意一...原创 2019-05-26 23:05:52 · 110 阅读 · 0 评论 -
进程间通信
管道&&有名管道管道可用于具有亲缘关系进程间的通信有名管道,它克服了管道没有名字的限制,还允许无亲缘关系进程间的通信信号报文队列(消息队列)共享内存信号量套接字...原创 2019-05-26 22:57:17 · 95 阅读 · 0 评论 -
程序员的自我修养(十七)-- 运行库的实现
C语言运行库CRT的基本功能及设计的几个基本原则:实现流程:1、 开始入口函数mainCRT初始化结束部分处理2、 堆的实现3、 I/O与文件操作4、 字符串相关操作5、 格式化字符串【%d、%s等的实现】C++运行库需要支持的特性string类的实现stream类的实现(包括操纵符(endl))全局对象构造和析构new/delete...原创 2019-05-25 23:07:53 · 180 阅读 · 0 评论