摘要: 阅读全文
posted @ 2020-09-12 17:10 Rev_omi 阅读(90) 评论(0) 推荐(0) 编辑
摘要: SEH 是 Windows 操作系统提供的异常处理机制,在程序源代码中使用 __try __catch __finally 等关键字来具体实现。 进程在运行过程中发生异常,OS 会委托进程处理,但如果进程内没有具体实现 SEH ,那么 OS 会启动默认的异常处理机制,终止进程运行。如果有调试器,则先 阅读全文
posted @ 2020-09-12 00:14 Rev_omi 阅读(362) 评论(0) 推荐(0) 编辑
摘要: PEB 结构体也很庞大,与代码逆向分析相关的有: ① BeingDebugged Win 7 kernel32.dll 中此 API 检查当前进程是否处于调试状态: 先找到 TEB ,再找到 PEB ,最后找到该值。 ② ImageBaseAddress GetModuleHandle() API 阅读全文
posted @ 2020-08-29 16:42 Rev_omi 阅读(146) 评论(0) 推荐(0) 编辑
摘要: TEB(Thread Environment Block,线程环境块),此结构体包含进程中运行的线程的各种信息,进程中的每个线程都对应一个 TEB 结构体。 由于微软的符号服务器无法正常访问,因此在没有符号的情况下,无法查看自己系统中 TEB 结构体。 TEB 结构体成员众多且结构复杂,在用户模式下 阅读全文
posted @ 2020-08-29 15:42 Rev_omi 阅读(213) 评论(0) 推荐(0) 编辑
摘要: TLS(Thread Local Storage,线程局部存储)回调函数(Callback Function)常用于反调试。 TLS 回调函数的调用运行要先于 EP 代码的执行。它是各线程独立的数据存储空间,可修改进程的全局/静态数据。 若在编程中启用了 TLS,PE 头文件中会设置 TLS 项目, 阅读全文
posted @ 2020-08-27 22:44 Rev_omi 阅读(953) 评论(0) 推荐(0) 编辑
摘要: 启动函数 Win32 应用程序源码中,都会有一个 WinMain 函数.但 Windows 程序的执行并非是从 WinMain 函数开始的.这段代码由编译器生成,完成进程初始化. 函数返回值后,进行一些必要的处理,最后调用 ExitProcess() 函数. 函数 call 指令会奖其之后的指令地址 阅读全文
posted @ 2020-08-25 15:30 Rev_omi 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 由于从 Win 7 开始引入了会话机制,因此使得之前通过 CreateRemoteThread() API 注入的旧方法对某些进程(服务进程)不再适用. 注入非0级的会话层能够成功,而对于0级会话的进程,例如 svchost.exe 会注入失败. 探索一下原因: 在 OD 中打开程序,并输入参数( 阅读全文
posted @ 2020-08-24 16:08 Rev_omi 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 会话( Session )指登录后的用户环境.大部分OS允许多个用户同时登录,并为每个用户提供独立的用户环境. Win 7 以前, 登录用户的会话 ID 从0开始, Win 7 及以后用户的会话 ID 从1开始. 取而代之的是,系统会话 ID 为0. 由于会话0中的进程并未完全隔离,因此会话1中的进 阅读全文
posted @ 2020-08-20 13:46 Rev_omi 阅读(90) 评论(0) 推荐(0) 编辑
摘要: WOW64Test_x86.exe: 多熟悉熟悉程序的流程,多看,多调试. ①被调试者是一个控制台应用程序,那么会调用 GetCommandLine() 返回当前程序的路径. ②main() 函数前会有 argc 与 argv 的压栈, 一个是参数个数,一个是带有程序名字的路径指针. WOW64Te 阅读全文
posted @ 2020-08-19 10:35 Rev_omi 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 内核调试: 微软公开了 Windows 系统库的符号文件,可以用 WinDbg 调试. ①本地内核调试: cmd 窗口中输入 " bcdedit -debug on " -> 重启 -> 打开 WinDbg -> File -> Kernel Debugging -> Local -> 确定. ②2 阅读全文
posted @ 2020-08-18 20:41 Rev_omi 阅读(184) 评论(0) 推荐(0) 编辑