自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 LeetCode题解02_排序汇总-16题

排序算法可以说是算法的基础,很多leetcode题目也会有涉及为了篇幅不至于太长,排序算法原理和leetcode题目分成2篇笔记进行介绍易错和重点每一个题目解法的最后都附带上了截图(csdn显示有点不清晰,但是不影响学习)...

2022-08-20 02:00:00 799 1

原创 LeetCode题解01_十大排序算法(C/C++实现)

根据是否利用额外空间?针对排序后2个相等键值的顺序和排序前顺序是否一致?对排序算法的稳定性有要求,稳定表示的就是排序前后相对顺序一致

2022-08-19 01:42:33 723

原创 Vim实用技巧_8.替换(substitute)和global命令

下面主要介绍vim中2个实用命令:替换命令和global命令> substitute,它允许我们查找某个模式的所有匹配,并用其他内容替换匹配结果> global,它让我们可以在匹配指定模式的所有行上执行任意的 Ex 命令...

2022-08-08 23:34:59 1247

原创 Vim实用技巧_7.模式匹配和查找

> - substitute,它允许我们查找某个模式的所有匹配,并用其他内容替换匹配结果> - global,它让我们可以在匹配指定模式的所有行上执行任意的 Ex 命令> - 精简的实用技巧:> > 1.按`正则表达式`查找时,使用 `\v` 模式开关> 2.按`原义`查找文本时,使用 `\V` 原义开关> 3.单词界定符,用 `` 符号表示单词定界符> 4.统计当前模式的匹配个数(`:%s///gn`)5.技巧085:利用查找历史,迭代完成复杂的模式6.技巧086:查找当前高亮选...

2022-08-08 01:09:09 4320 1

原创 Vim实用技巧_6.复制和粘贴原理(寄存器)

> - 简要总结:`ddp`:是对文本行的剪切与粘贴操作,实际上是调换了两行的顺序`yyp`:是针对行的复制与粘贴操作,即创建一行副本`"+p`:将系统剪切板中的代码或者文字复制到vim中`"+y`:将vim中的代码或者文字复制到剪切板......

2022-08-07 23:58:36 2820

原创 Vim实用技巧_5.在文件间和文件内快速移动

使用vim最想获得的技能?> - `w`:正向移动到下一个单词的开头> - `b`:反向移动到当前单词开头> - `ea`:在单词结尾后添加> - `daw`:删除当前单词,外加一个空格> - `ciw`:只删除单词,且进入插入模式> - `f{char}` :**在光标位置与`当前行`行尾之间**查找指定的字符> - `` 命令像后退按钮一样,而与之互补的 `` 命令则像是前进按钮.........

2022-08-06 12:25:08 918

原创 Vim实用技巧_4.管理多个文件(打开 + 切分 + 保存 + netrw)

> vim可以同时处理多个文件,这一部分一定要学习,如果时间没有那么多,下面的技巧一定要重点看一下> - 1.技巧39:将工作区切分成窗口;最常用的就是`vsp`和`sp`来分割窗口,``来切换活动窗口,鼠标调节窗口大小> - 2.技巧43:使用 `netrw` 管理文件系统;主要就是`edit.`和`Explore`命令,结合技巧39能增加操作文件的层次结构.........

2022-08-06 00:40:31 2196

原创 Vim实用技巧_3.可视模式和命令模式

下面介绍vim的几种常用模式的技巧普通模式插入模式可视模式命令模式可视模式命令模式。

2022-08-05 01:23:55 993

原创 Vim实用技巧_2.普通模式和插入模式

下面介绍vim的几种常用模式的技巧普通模式插入模式可视模式命令模式普通模式插入模式。

2022-08-04 23:03:04 723

原创 Vim实用技巧_1.vim解决问题的方式

Vim 文档只是简单地提到 命令会重复上次修改(参见 ),"上次修改"可以指很多东西,一次修改的单位可以是字符、整行,甚至是整个文件使用的效果截图示例:从进入插入模式的那一刻(包括进入的按键也会记录,例如,输入 ),直到返回普通模式时为(输入),Vim 会记录每一个按键操作做出这样一个修改后,再用 命令的话,它将会重新执行所有这些按键操作Vim 可以录制任意数目的按键操作,然后在以后重复执行它们;我们可以把 命令当成一个很小的宏(macro);第11章会有宏的详细介绍示例:一共有3行,想在每行的结尾添

2022-08-04 00:56:03 277

原创 Vim实用技巧_0.vim - introduction

vim是一个强大的工具,是linux下必须要学习的工具。

2022-08-03 23:35:09 419

原创 linux性能分析工具:perf入门一页纸

是linux(2.6+)官方的分析器(),是一个轻量化的采用和分析的内核级工具,位于下的linux内核源码中,并且是基于内核的;是一个具有分析(profiling)、跟踪( tracing)和脚本(scripting)功能的多工具集合使用列举出版本信息,然后使用下面对应的命令进行安装常见使用场景特别适合CPU分析(perf可以被用来剖析CPU的调用路径):分析/采样CPU的堆栈跟踪、跟踪CPU调度器的行为、磁盘I/O等;通过对程序进行几次采样,通常就可以找到影响性能的线索下面展示了最常用的子命令,包

2022-07-13 21:30:00 1475 1

原创 堆(heap)系列_0x0A:3种方法一次性解决堆溢出问题

概述:本篇文章主要介绍堆问题中最常见的堆溢出问题的排查思路:常规思路 + 页堆思路 + 应用程序验证器思路前提:可以看到懂得DPH(点击查看)和会使用应用程序验证器(点击查看)和WinDbg

2022-07-06 13:35:39 2374 2

原创 堆(heap)系列_0x09:堆破坏示例(非法访问+未初始化+堆句柄不匹配)

主要介绍:1.非法访问堆内存;2.未初始化堆内存访问;3.堆句柄不匹配;这3个问题的排查思路

2022-07-06 13:18:26 1796

原创 堆(heap)系列_0x08:NT堆调试支持_立刻发现调试支持(DPH)

页堆:将堆的全部或部分调用到另一个堆管理器,会将申请的,且将的下一个页设置为,用这个只读页来检查缓冲区溢出;也可以将保护页(或者叫栅栏页)放在堆块前面;页堆在内存方面会造成巨大开销,因此1.运行notepad.exe,启动任务管理器记录这个notepad实例的PID和提交大小2.启动页堆管理员权限运行(使用方法,点击这里查看),GUI界面上给notepad.exe开启页堆,命令行也可以观察启动和关闭页堆前后的提交大小变化如下,开启后,提交大小明显变大,这是因为页堆提供了额外的内存分配扩展命令扩展:!he

2022-07-03 18:27:22 1549

原创 堆(heap)系列_0x07:NT堆调试支持_滞后发现调试支持

堆被破坏遇到最常见的原因就是溢出,下面主要介绍一下正常的堆结构和一种典型的溢出场景先要熟悉正常的堆块结构,下面是堆块结构和溢出的示意图用户只能访问到堆块的(HeapAlloc函数以返回地址的形式将用户数据区的起始地址返回)指的是访问非用户数据区的内存,有可能破坏了堆的控制数据(等)或者触发了堆检查机制(大多数检查机制都位于用户数据区的尾部)下面是一个在空闲堆块上分配一块内存的示意图:在堆上,分配一块内存简要步骤:示例场景:写入数据太多,导致覆盖当前堆块用户数据区后面结构和,再次申请内存由于破坏导致分配内存失

2022-06-28 19:35:12 1250 1

原创 堆(heap)系列_0x06:NT全局标志和gflags.exe一页纸

NT全局标志是由一组位(bit)组成的32位数值,每一位都代表特定的功能;全局标志有2种影响范围:(影响所有进程,或者叫进程级)和(进程级的优先级更高)下面通过几个问题来介绍全局标志问题1:系统级别的全局标志怎么影响单个进程?没有指定进程级的全局标志时,进程级全局标志的影响流程:进程级的在进程创建时,通过进程加载器传播给每个用户态进程(被保存在进程环境块字段中)问题2:进程什么时候加载全局标志?进程的执行要经历进程加载器将磁盘上的文件加载到内存的过程(即PE文件的加载过程),此时会从注册表(如果有值话)读取

2022-06-27 18:41:06 1307

原创 堆(heap)系列_0x05:一张图剖析堆块分配和FreeLists的联系

用一个示例来说明堆块的分配和释放,侧重点主要是对堆块分配后,返回的地址是哪里?以及堆块释放后,申请的内存变化,被谁回收了?下面对源码中处理堆块的2个函数和重点进行讲解执行完 ,在新创建的堆上想要获取一个大小是0x123的堆块查看堆段和堆块的相关信息,主要关注和是怎么得到的?2.HeapFree执行完 ,释放刚才申请的堆内存3.命令使用命令观察堆块信息,下面是释放内存后的堆信息如果感兴趣可以观察一下堆块释放前后的堆结构对比,会发现结构是一样的,唯一的区别:下面针对内存回收中使用的FreeLi

2022-06-16 18:42:39 819

原创 堆(heap)系列_0x04:堆的内部结构(_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)

_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY,这3种数据结构使用WinDbg进行分析

2022-06-14 22:30:00 1278

原创 堆(heap)系列_0x03:堆块 + malloc/new底层 + LFH(WinDbg分析)

1.什么是堆块(chunk)?2.malloc、new的底层汇编是怎么实现的?3.LFH的全面介绍

2022-06-09 19:15:00 863

原创 PE格式系列_0x05:输出表和重定位表(.reloc)

输出表简单理解就是一个表格,记录输出函数的信息流程:PE装载器访问PE文件输出表时,通过获取一个函数的地址,通过获取一个函数的名称,但是此时还没有建立对应关系,通过来建立名称和地址的联系示例1:DllDemo中只有一个导出函数MsgBox使用PE工具查看输出表示例2:kernel32.dll的输出表汇总查看2.基址重定位表通常重定位表只有dll文件和开了ASLR的exe才需要关心,因为此时不能保证加载时默认的装载地址不会被其他模块占用简单理解,对于PE加载器来说,他不关心需要修正的地址的具体用途,只

2022-06-08 07:45:56 768

原创 堆(heap)系列_0x02:堆的前世今生(WinDbg+Visual Studio汇编)

1.默认堆是大小是多少?2.私有堆是什么?HeapCreate函数原理?堆列表是什么?3.堆销毁过程;4.堆创建和销毁的最小示例讲解

2022-06-08 06:53:27 1176 1

原创 堆(heap)系列_0x01:堆-Introduction(框架+类型)

1.堆(heap)和栈(stack)的区别;2.操作系统层面堆的框架;3.堆的类型介绍(CRT堆+NT堆+段堆+默认堆+私有堆)

2022-06-05 01:29:15 475

原创 IDA脚本一页纸(IDC+IDAPython)-示例版

IDA的脚本主要有2种语法,一种类似于C语言(高版本更接近C++)的,一种支持python的运行结果,符合预期脚本2:枚举指令运行结果,符合预期交叉引用实际上是有2个方向的:下面是交叉引用常使用的函数或者宏在的节选片段test 1:向上枚举调用方运行结果:明白了上面的示例,这个示例也很容易,就是更改一下函数运行结果:下面是一个典型的文件的格式,《IDA Pro权威指南第二版》的13章 扩展IDA的知识有详细介绍每个函数的信息会存储在一行,基本格式: + + + + ,这些如果你看过PE

2022-06-01 01:11:59 3795

原创 CrackMe034:Process Monitor逆向keyfile一篇就够了

文章目录1.程序基本信息2.KeyFile文件是否存在?3.算法分析4.示例验证5.注册机6.参考1.程序基本信息CrackMe033和CrackMe034都是《使用OllyDbg从零开始Cracking》第九章的案例程序运行就是一个简单的界面,没有注册按钮;如果不是事先知道这个程序是需要KeyFile文件,一定会一脸懵逼这也提醒自己,下次遇到类似的情况,一定要多一个思路,想一想程序是不是需要KeyFile文件(其实很多商用程序都需要配置文件的)2.KeyFile文件是否存在?首先想到用Pro

2022-05-30 20:15:00 449

原创 CrackMe033:OD和IDA分析结果不同?

文章目录1.基本信息2.第1个错误对话框3.第2个错误对话框4.验证猜想5.注册机6.参考1.基本信息CrackMe033和CrackMe034都是《使用OllyDbg从零开始Cracking》第九章的案例2个程序都是汇编写的,没有壳题外话:开始入门时看的就是《使用OllyDbg从零开始Cracking》,这个文档很适合入门,当时还对着操作了一遍,但是这次逆向居然不记得以前学过了,重复操作浪费时间了,因此有2点后续一定要注意1.一定要自己逆向出来,即使参考别人的也要自己操作一遍2.逆

2022-05-30 19:30:00 654

原创 PE格式系列_0x04:输入表查看(WinDbg+PEview+Stud_PE+Dependency+CFF)

目的:使用一个具体例子查询输入表的真实模样;notepad.exe加载到内存时,查询输入表的INT,用这个INT中的函数名对应的真实地址填充notepad.exe内存中IAT的过程;PE文件装在完后,通过IAT就可以找到函数在内存中真正的地址文章目录1.WinDbg查看输入表1.输入表起始地址2.IMAGE_IMPORT_DESCRIPTOR3.INT分析(得函数名)4.IAT分析(填充地址)5.总结2.常用PE工具查看输入表PEviewStud_PEDependency3.参考1.WinDbg查看.

2022-05-30 01:20:53 1189

原创 PE格式系列_0x03:输入表原理+IAT填充流程

1.输入表的原理、2.PE装载器填充IAT的完整过程、3.IAT和INT关系

2022-05-30 00:04:37 592

原创 CrackMe032:UPX脱壳+keyfile+DarkDe+Process Monitor

下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)文章目录1.脱壳+基本分析脱壳DarkDe分析2.KeyFile破解KeyFile基础知识破解本程序3.注册界面破解step 1.DarkDe分析按钮事件step 2.OK按钮分析step3 .4个序列号事件step 3-1.Edit处理的框架step 3-2.关键函数分析step 3-3.验证4.注册

2022-05-28 08:45:00 861

原创 CrackMe029:OD+IDA+关键字符串(不能再简单了...)

下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)文章目录1.程序基本信息2.逆向分析程序3.注册机4.参考用PEiD查看这3个连续程序(27、28、29),都是用VC6.0编写,没有壳1.程序基本信息需要正确的用户名和序列号2.逆向分析程序通过错误提示框字符串找到CHECK的响应函数,不熟悉可以看CrackMe001的分析通过OD和I

2022-05-28 01:24:19 287

原创 CrackMe028:解决花指令

下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)文章目录1.了解程序信息2.逆向分析程序1.OD分析2.IDA分析3.验证分析3.注意事项4.参考用PEiD查看这3个连续程序(26、27、28),都是用VC6.0编写,没有壳1.了解程序信息程序需要输入正确的用户名和序列号才能注册成功2.逆向分析程序1.OD分析OD中通过错误提示定位引

2022-05-28 01:17:21 443

原创 写一个PE的壳_Part 6:简单的混淆

文章目录1.清理step 1:移除不必要信息step 2:重命名.packed2.简单的混淆step 1:改变packer(python)step 2:改变unpacker(C)3.结果4.其他可能5.参考处理完Part 4,Part 5会轻松很多;Part 6主要是对Part4 中的最终结果中加入简单的混淆1.清理step 1:移除不必要信息当前现状我们已经使用 -nostartfiles 和 -nostdlib编译选项,在最终的二进制文件中移除了C的标准库和运行时库;但是结果PE中可能

2022-05-27 22:30:00 676

原创 写一个PE的壳_Part 5:PE格式修复+lief源码修改

文章目录1.CFF查看2.python再次加载3.异常2的Raw问题step 1:运行程序step 2:调试器运行程序step 3:单步调试step 4:CFF查看二进制step 5:查看LIEF源码step 6:解决办法step 7:结果验证step 8:源码修改建议4.参考用原教程中Part 4的py文件处理test.exe,生成名为packed_bug1.exe程序;运行时直接报错下面给出了整个修复的思路1.CFF查看CFF看一下packed_bug1.exe,直观上会发现2处异常,导致PE

2022-05-27 21:00:00 805

原创 写一个PE的壳_Part 4:修复对ASLR支持+lief构建新PE

文章目录1.解决思路step 1:当前现状step 2:解决思路step 3:内存布局2.修改unpack部分Image BasePE Header and Section3.修改python的打包程序step 1:构建unpack部分step 2:ASLR特殊处理4.构建结果处理Part 3中遗留了一个隐患,MinGW无法生成重定位表,因此无法产生可移动的二进制文件;Part 4中要处理MinGW生成的可执行文件(不能移动的,即不支持ASLR的二进制文件)的打包问题1.解决思路step 1:当前

2022-05-27 20:15:00 722

原创 写一个PE的壳_Part 3:Section里实现PE装载器

文章目录Part 3:Setion里实现PE装载器1.unpack部分step 1:通用想法step 2:修改代码step 3:编译选项2.用python打包step 1:lief安装和使用step 2:避免告警step 3:命令行参数step 4:准备文件step 5:给PE文件添加一个section3.结果展示4.遗留问题5.参考Part 3:Setion里实现PE装载器Part 3主要做了什么?Part 1和Part 2中我们写了一个简易的PE装载器(loader.exe),可以加载一个3

2022-05-26 22:15:00 856

原创 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)

文章目录Part 2:输入表和重定位表1.ASLR预备知识2.输入表支持detail 1:什么是输入表?detail 2:PE Header描述detail 3:真实的输入表detail 4:编程处理数据结构编程实现扩展:LIEF中重建Import Table介绍3.管理重定位表detail 1:什么是重定位表?detail 2:重定位表结构detail 3:编程处理4.结果展示5.参考Part 2:输入表和重定位表本文主要处理Part 1中遗留的2张表:输入表和重定位表(执行一个ASLR使能的文件不

2022-05-26 20:30:00 3589

原创 写一个PE的壳_Part 1:加载PE文件到内存

前面都是PE的零散的知识,可以通过给PE文件写一个壳将前面的PE相关知识进行汇总网上看到了一个英文教程(详细看参考),里面包含了给PE加壳和调用LIEF库的操作(这个库很简单);按照教程实现一遍(错误都进行了修正,主要是Part4),对理解PE文件格式和脱壳很有帮助下面是结合自己的实践写的笔记,不是教程的原版翻译教程主要实现的壳的整体功能:1.A PE File will be copied as-is (at first) in a custom section.2.The unpacke.

2022-05-25 02:10:04 1201

原创 CrackMe027:CD-CHECK(光盘检查)

下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)文章目录1.程序信息2.按钮对应函数入口3.分析注册按钮4.验证5.参考用PEiD查看这3个连续程序,都是用VC6.0编写,没有壳1.程序信息程序就一个有用的按钮,点击出现错误提示框,程序显示的是光盘检测扩展:光盘检测就是程序运行时有可能检查下面信息;若检测符合要求,才会执行正常的程序流

2022-05-25 01:40:10 561

原创 CrackMe020:脱壳 + DarkDe分析

下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)文章目录1.程序基本信息2.脱壳方法 1.PEiD通用脱壳器方法 2.OllyDump脱壳3.DarkDe分析4.IDA分析5.验证结果6.参考1.程序基本信息程序输入验证没有提示信息,猜测应该是输入序列号后会生成注册码,当注册码等于3E74984B时,逆向才算成功查壳可以看到,有一个WWPac

2022-05-25 01:21:58 674

原创 调试工具:应用程序验证器Application Verifier一页纸(appverif+WinDbg+gflags)- 详细版

当一个Release版本软件出现bug时,可以使用操作系统提供的验证机制;校验机制中有2个常用工具:应用程序验证器()是windows本地代码的分析工具,依赖于操作系统的支持来捕获常见的系统API误使用,工具可以自动捕获很多难以重现的代码错误;是一个设置应用验证机制参数的工具工具主要包括2个部分:实现在等dll中的开头的函数和一个设置工具()应用程序验证器()本质上就是一个工具,下面通过问答和一个示例来讲解下面通过问答的形式说明工具的一些使用疑惑(主要是第一次使用会有),其实多操作几次自然就记住了什么情况下

2022-05-25 01:13:16 4930

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除