随笔分类 - 加密与解密
摘要:对《逆向工程核心原理》 PE 相关的拓展知识。 Windows 系列: Windows 1.0 ,Windows 2.0 ,Windows 3.0 ,Windows 3.1 ,Windows 95 , Windows 98 ,Windows 98 SE , Windows ME , Windows
阅读全文
摘要:VMM:Virtual Machine Monitor,虚拟机监控器。也称为 “Hypervisior”,特权层(Ring -1),能够监控操作系统的各种行为。VMX:Virtual Machine Extension,虚拟机扩展。是 CPU 提供的一种功能。VMCS:Virtual-Machine
阅读全文
摘要:ntdll!RtlInitializeExceptionChain 在当前的 Win 10 最新版上 ntdll_RtlUserThreadStart ntdll!RtlInitializeExceptionChain: 77588950 8bff mov edi, edi 77588952 55
阅读全文
摘要:异常处理程序的安全性 SEH的结构是存储在栈中的,而栈中数据的安全性有时无法得到保证,例如程序接受恶意输入导致溢出攻击时,栈中的 SEHandler可能被覆盖为非法过程,从而执行攻击者预设的功能代码。为了防止此类攻击,微软提供了 SafeSEH 机制和 SEHOP 机制,以阻止那些非法的 SEHan
阅读全文
摘要:开发人员主要使用两种异常处理技术,一种是 SEH (结构化异常处理),另一种是 VEH (向量化异常处理,XP 以上) Intel公司在从386开始的IA-32家族处理器中引人了中断(Interrupt)和异常(Exception)的概念。 中断是由外部硬件设备或异步事件产生的,而异常是由内部事件产
阅读全文
摘要:操作系统分为两层:应用层和内核层。应用层通过系统调用进入内核,由系统底层完成相应的功能。 驱动程序可以以内核模块方式加载。 内核理论基础 权限级别 目前操作系统的特权层级只有两个 Ring 0 和 Ring 3 .核心态工作在 R0 级,用户态工作在 R3 级。 HAL 是一个可加载的核心模块 HA
阅读全文
摘要:光盘检测主要注意一些 API : 只运行一个实例 Windows 是一个多任务操作系统,应用程序可以多次运行以形成多个实例。但基于安全性的考虑,要求程序只能运行一个实例。
阅读全文
摘要:网络验证的目的是:将关键数据放到服务器上,从服务器上取得数据后软件才能运行。拆解的一般思路是拦截网络返回包,分析程序是如何处理数据包的。 当一个连接建立后,就可以传输数据了。常用的数据传送函数有 send()、recv() 两个 Socket 函数,以及微软的 WSASend()、WSARecv()
阅读全文
摘要:菜单功能限制 相关函数:EnableMenuItem() hMenu : 菜单句柄 uIDEnableItem : 欲允许或禁止的一个菜单条目的标识符。 如果在wEnable参数中设置了MF_BYCOMMAND标志,这个参数就代表欲改变菜单条目的命令ID。如设置的是MF_BYPOSITION,则这个
阅读全文
摘要:SetTimer() 函数 向系统申请一个计时器并指定计时器的时间间隔,同时获得一个处理器超时的回调函数,超时时系统会向申请计时器的目标窗口发送消息 WM_TIMER timeSetEvent() 函数 多媒体计时器,精度可以达到 1ms GetTickCount() 函数 返回从系统成功启动以来所
阅读全文
摘要:将程序跑起来,多下断点,多看几遍代码流程。 程序的主流程非常的简单,两个对话框的出现也只是在 DialogBoxParamA() 中,该函数的参数: 查资料可知,第四个参数是指向对话框过程的指针,即回调函数,函数返回的消息与之对应会发生相应跳转调用相应的函数。 可以看到,下方有一个 EndDialo
阅读全文
摘要:序列号保护机制: ① 序列号 = F(用户名) 将序列号与变换后的用户名作对比。非常容易被攻破。 ② F-1(序列号) = 用户名 将序列号进行逆变换,然后与用户名进行对比。穷举法,求逆算法,输入序列号然后得到用户名从而得到一对正确的输入。 ③对等函数检查 F1(用户名) = F2(序列号) ④二元
阅读全文
摘要:函数 1.栈平衡 在 x64 环境下,某些汇编指令对栈顶的对齐有要求,因此在 Visual Studio 中,有时会出现申请了栈空间而不使用的情况。 2.启动函数 在 IDA 中找到启动函数的步骤: start -> _tmainCRTStartup -> 下翻找到 main 或者通过找到 exit
阅读全文
摘要:启动函数 Win32 应用程序源码中,都会有一个 WinMain 函数.但 Windows 程序的执行并非是从 WinMain 函数开始的.这段代码由编译器生成,完成进程初始化. 函数返回值后,进行一些必要的处理,最后调用 ExitProcess() 函数. 函数 call 指令会奖其之后的指令地址
阅读全文
摘要:内核调试: 微软公开了 Windows 系统库的符号文件,可以用 WinDbg 调试. ①本地内核调试: cmd 窗口中输入 " bcdedit -debug on " -> 重启 -> 打开 WinDbg -> File -> Kernel Debugging -> Local -> 确定. ②2
阅读全文
摘要:OllyDbg 是有 Oleh Yuschuk 编写的一款具有可视化界面的用户模式调试器.可以在各种版本的 Windows 上运行,但在 NT 架构上是最好的. plugin 目录中存放插件,直接将插件放里面,OD即可检测到. Debug -> Select Import Librariers ,可
阅读全文
摘要:x86系列的CPU采用 Little-ending 字节序,而网络协议采用的是 Big-ending. 用于16位 Windwos 的API称为 Win16 , 32/64位 的 API 称为 Win32 . Windows 运转的核心是动态链接. ①kernel32.dll 主要负责操作系统核心功
阅读全文

浙公网安备 33010602011771号