摘要:
算法——排序——选择排序(1)——直接插入排序 什么是直接插入排序(Straight Insertion Sort) 简单来说就是将一条记录插入到已经排好序的有序表里面。通常是假设第一个已经排好序,后面的从第二个开始抽出来和前面的进行直接插入排序。 代码实现 void InsertSort(int* 阅读全文
2021年5月25日
摘要:
算法——排序——选择排序(1)——简单选择排序 什么是简单选择排序 简单来说就是每次遍历数组将最大的或最小的选择出来后移动到一个地方,然后再把剩下的继续选最大或最小的再移动,移动到最后一个就不用移动了,因为前面已经排好序了。 也可以简单的理解为,每次选出一个最大或者最小的,然后再从剩下的选最大或者最 阅读全文
2021年5月24日
摘要:
算法——排序——交换排序(1)——冒泡排序 什么是冒泡排序 冒泡排序的英文是bubble sort,是八大内部排序算法中的最基础的交换排序算法。 冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点地向着数组的一侧移动。 就像碳酸饮料的气泡一样,汽水中 阅读全文
2021年5月10日
摘要:
算法——计算算法效率 度量 度量一个程序(算法)的执行时间有两种办法: 1 事后统计法 2 事前统计法 事后统计法 计算一个程序或算法,跑完后总共用时。这种方法可行,但是有两个不足:1:必须得运行后才能得到结果。2:所得的时间统计量还依赖于计算机的硬件、软件等环境因素,无法很简单的一口咬定是算法的所 阅读全文
2021年5月9日
摘要:
算法——排序——大纲 一些常见的排序算法,算是排序算法的基础吧。 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 1) 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 2) 外部排序法: 数据量过大,无法全部加载到内存 阅读全文
2021年5月6日
摘要:
Clang Static Analyzer——源码分析——解读ReadMe 要分析一个开源项目,它的ReadMe是必须要阅读的 生肉: // // // Clang Static Analyzer // // = Library Structure = The analyzer library ha 阅读全文
2021年5月5日
摘要:
反调试——VEH VEH:向量化异常(vectored exception handle) VEH和SEH的区别 SEH是基于线程的,而VEH是基于进程的。 因为很清楚的可以看到SEH的数据结构是保存在栈空间的,直接在函数体内用push来处理,而VEH是以双链表的形式保存在堆里面。 异常触发后的顺序 阅读全文
摘要:
反调试——断点原理 进行在调试的时候会用到断点这个东西,那么断点的原理是什么,为什么可以断下来呢。 断点其实就是和异常有非常大的关联,首先针对异常的机制,如果发生了异常会先看有没有调试器调试器有没有接受该异常如果有就停在哪里等调试器处理,如果没有调试器就用SEH来处理。 也就是说根据异常以及接受是什 阅读全文
摘要:
反调试——自定义异常处理器并添加调试器检测 相当于对于前面的博客:https://www.cnblogs.com/Sna1lGo/p/14732048.html 自己写代码来实现异常处理。 异常处理机制: 出现异常,首先看有没有调试器有的话交给调试器处理,没有就传一堆信息给异常函数来处理 异常处理函 阅读全文
摘要:
反调试——Windows异常-SEH 概念: SEH:Structured Exception Handling SEH是Windows默认的异常处理机制 如何使用 在代码中使用 __try__except()//结构类型的语句 __except()小括号里面填写表达式,表达式为真的时候执行里面 阅读全文