摘要:
[IDA]结构体指针的转换 今天在分析恶意代码时,发现其复制一份PE文件,其对PE头部进行许多步处理,但是IDA并不能识别这些变量,因此需要我们手动来添加,但是随之而来的一个问题是,IDA有标准的PE结构体,但是却没有指针,因此我们就需要重定义变量。 一、如何判断对PE文件的操作 结合之前分析这是一 阅读全文
摘要:
一段HookSend函数的恶意代码反汇编分析 这段代码本身分析难度不大,但理解不好其hook思路造成走了很多弯路,有些理解不到位的。 但之后再写这类inlineHook代码时,可以借鉴这种思路,call [dword_a]; [[dword_a] ]= _originFunc[0:5] + jmp 阅读全文
摘要:
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 10-10-12 分页机制 1. CPU是如何通过线性地址查找物理地址的? 2. MMU是什么? 3.CPU内存管理内部大体结构框架? 4.会写、直接、不缓存什么概念 阅读全文
摘要:
repne scasb 计算字符串的长度 scasb 来判断 al数据是否在edi中,配合repne来使用(当不为零时继续遍历)。 该指令常用来判断字符串的长度。 其思路是将ecx置为-1(计数器),eax置为0(字符串结尾),之后每扫描一个ecx会再次减少1,当edi中找到0时其会终止, 此时ec 阅读全文
摘要:
stosb,stosw,stosd 初始化字符串 该指令类分别将 al,ax,eax 存入到 edi 所指向的内存 [edi],常用其来初始化内存。 见到该指令时,关注eax、edi、ecx即可。 如下代码,其将var_FFF[3FF]这个数组给清空,很好理解。 阅读全文
摘要:
检查最高位是否为1的一个技巧 很多flags有不同位,对于最高位的检验,我们一般思维是 and 一个数值然后判断是否为零,或者右移判断为零 但发现了一种更好的检测方法 js 来判断,如果最高位为1,则test后 eflags中的 s位为1,其表示负数。 因此,我们可以使用 test eax,eax 阅读全文
摘要:
windows内核中对于索引*4(内存)的一个反汇编知识点 今天在分析Windows内核的MmIsAddressValid函数中发现了一个计算策略。 10-10-12分页中,我们按照常规应该取10位,即右移22位,然后乘以4来获取索引 但是反汇编代码中的做法是右移20位,然后后两位清零,这样仍然会得 阅读全文
摘要:
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 任务段与任务门 索引: 1.任务段 2.如何加载一个段寄存器和取出段寄存器 3.TSS的作用(在Windows操作系统上) 4.如何查看TSS段内容 5.构造TSS门 阅读全文
摘要:
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 中断门与陷阱门 问题索引: 1.中断的初步认识 2.查看idt表 3.中断门描述符 4.中断门的执行流程 5.构造中断门函数并通过iref返回 6.陷阱门描述符 7. 阅读全文