2018年3月21日
摘要: 《恶意代码分析实战》 附录 A accept用来监听入站网络连接,这个函数预示着程序会在一个套接字上监听入站网络连接。AdjustTokenPrivileges用来启用或禁用特定的访问权限。执行进程注入的恶意代码经常会调用这个函数,来取得额外的权限。AttachThreadInput将一个线程处理的 阅读全文
posted @ 2018-03-21 20:51 CrisCzy 阅读(1167) 评论(0) 推荐(0) 编辑
  2018年1月31日
摘要: 思路 进程EPROCESS结构体中含有进程名ImageFileName(需求处ImageFileName在EPROCESS结构体中的相对偏移)——》获得进程EPROCESS——》通过进程句柄获得EPROCESS——》通过进程PID打开进程获得进程句柄 计算ImageFileName在EPROCESS 阅读全文
posted @ 2018-01-31 00:06 CrisCzy 阅读(1956) 评论(0) 推荐(0) 编辑
  2018年1月8日
摘要: 加壳加壳的主要目的是压缩大小和阻碍分析。加壳以后的可执行文件会将原来的可执行文件作为数据存储。通过加密和一些反逆向技术(对抗反汇编?,反调试,反虚拟化等等)来让程序难以分析。 脱壳存根被加壳程序中的脱壳存根由操作系统加载,然后它负责加载原始程序。固可执行程序的入口点指向脱壳存根。对程序进行静态分析需 阅读全文
posted @ 2018-01-08 23:53 CrisCzy 阅读(946) 评论(0) 推荐(0) 编辑
  2018年1月7日
摘要: rewolf-wow64ext的目的就是让运行在Wow64环境中的x86应用程序可以直接调用x64下ntdll.dll中的Native API。 学习中可以得到几个结论 在X64环境下的进程,32位程序,映射了两个地址空间,一个32位,一个64位。而且这两种工作模式是可以切换的的。 WOW64进程中 阅读全文
posted @ 2018-01-07 21:00 CrisCzy 阅读(5762) 评论(0) 推荐(2) 编辑
  2017年12月20日
摘要: 学习开源代码ReflectiveDLLInjection时做的一些思路总结。 阅读全文
posted @ 2017-12-20 17:59 CrisCzy 阅读(2351) 评论(0) 推荐(0) 编辑
  2017年11月7日
摘要: ret指令, 执行过程 ret指令用栈中的数据,修改IP的值,从而实现近转移。 CPU执行ret指令时,进行下面两步操作: (IP)=((SS)*16+(SP)) (SP)=(SP)+2; 另一种用法 ret n (n为整数) 等效于 (IP)=((SS)*16+(SP)) (SP)=(SP)+2; 阅读全文
posted @ 2017-11-07 21:18 CrisCzy 阅读(2560) 评论(0) 推荐(0) 编辑
  2017年10月25日
摘要: EXCEPTION_EXECUTE_HANDLER (1) 异常已经被识别,也即当前的这个异常错误,系统已经找到了并能够确认,这个__except模块就是正确的异常处理模块。控制流将进入到__except模块中,当except代码块运行结束后,系统会认为异常已经处理,于是允许应用程序继续执行。 全局 阅读全文
posted @ 2017-10-25 15:06 CrisCzy 阅读(5582) 评论(0) 推荐(1) 编辑
  2017年9月28日
摘要: IsDebuggerPresent() 该函数读取当前进程的PEB里BeingDebugged的值用于判断自己是否处于调试状态 windows2000上是这样定义这个函数的 在x86下用windbg查看PEB结构 可知在PEB(进程环境块)偏移0x002处获得BeingDebugged PEB(进程 阅读全文
posted @ 2017-09-28 23:22 CrisCzy 阅读(811) 评论(0) 推荐(0) 编辑
  2017年9月27日
摘要: 数组个数#ifndef ARRAYSIZE #define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))#endif 获得结构体首地址#define CONTAINING_RECORD(address, type, field) ((type *)( \ (PCHA 阅读全文
posted @ 2017-09-27 13:59 CrisCzy 阅读(293) 评论(0) 推荐(0) 编辑
  2017年9月22日
摘要: 反调试 <!--[if !supportLists]-->1. <!--[endif]-->IsDebuggerPresent() 该函数读取当前进程的PEB里BeingDebugged的值用于判断自己是否处于调试状态 BOOL APIENTRY IsDebuggerPresent(VOID) { 阅读全文
posted @ 2017-09-22 16:23 CrisCzy 阅读(3590) 评论(1) 推荐(2) 编辑