简单过VMP反调试反虚拟机-插件-非插件
本帖最后由 LYQingYe 于 2015-11-21 21:42 编辑今天 刚考完数学,我就疯了,所以就做了个小教程,看到论坛些许人遇到VMP反调试,反虚拟没办法,我就做了这么个小教程,没啥技术含量。也讲解下VMP反调试某些原理,大牛飘过。 觉得对你有帮助的别忘了评分。
StrongOD只需勾选内核模式,只是为了演示反调试原理,也带有插件演示。系统断点是为了 反TLS反调试技术。
[参考资料]
typedef struct _PEB
50 {
51 BOOLEAN InheritedAddressSpace;
52 BOOLEAN ReadImageFileExecOptions;
<font color="#ff0000"> 53 BOOLEAN BeingDebugged; //被调试时候改值为 真</font>
54 BOOLEAN Spare;
55 HANDLE Mutant;
56 PVOID ImageBaseAddress;
57 PPEB_LDR_DATA LoaderData;
58 PVOID ProcessParameters; //PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
59 PVOID SubSystemData;
60 PVOID ProcessHeap;
61 PVOID FastPebLock;
62 PVOID FastPebLockRoutine; //PPEBLOCKROUTINE FastPebLockRoutine;
63 PVOID FastPebUnlockRoutine; //PPEBLOCKROUTINE FastPebUnlockRoutine;
64 ULONG EnvironmentUpdateCount;
65 PPVOID KernelCallbackTable;
66 PVOID EventLogSection;
67 PVOID EventLog;
68 DWORD Freevector; //PPEB_FREE_BLOCK Freevector;
69 ULONG TlsExpansionCounter;
70 PVOID TlsBitmap;
71 ULONG TlsBitmapBits;
72 PVOID ReadOnlySharedMemoryBase;
73 PVOID ReadOnlySharedMemoryHeap;
74 PPVOID ReadOnlyStaticServerData;
75 PVOID AnsiCodePageData;
76 PVOID OemCodePageData;
77 PVOID UnicodeCaseTableData;
78 ULONG NumberOfProcessors;
79 ULONG NtGlobalFlag;
80 BYTE Spare2;
81 LARGE_INTEGER CriticalSectionTimeout;
82 ULONG HeapSegmentReserve;
83 ULONG HeapSegmentCommit;
84 ULONG HeapDeCommitTotalFreeThreshold;
85 ULONG HeapDeCommitFreeBlockThreshold;
86 ULONG NumberOfHeaps;
87 ULONG MaximumNumberOfHeaps;
88 PPVOID *ProcessHeaps;
89 PVOID GdiSharedHandleTable;
90 PVOID ProcessStarterHelper;
91 PVOID GdiDCAttributevector;
92 PVOID LoaderLock;
93 ULONG OSMajorVersion;
94 ULONG OSMinorVersion;
95 ULONG OSBuildNumber;
96 ULONG OSPlatformId;
97 ULONG ImageSubSystem;
98 ULONG ImageSubSystemMajorVersion;
99 ULONG ImageSubSystemMinorVersion;
100 ULONG GdiHandleBuffer;
101 ULONG PostProcessInitRoutine;
102 ULONG TlsExpansionBitmap;
103 BYTE TlsExpansionBitmapBits;
104 ULONG SessionId;
105 } PEB, *PPEB;
Thread Local Storage(TLS),是Windows为解决一个进程中多个线程同时访问全局变量而提供的机制。TLS可以简单地由操作系统代为完成整个互斥过程,也可以由用户自己编写控制信号量的函数。当进程中的线程访问预先制定的内存空间时,操作系统会调用系统默认的或用户自定义的信号量函数,保证数据的完整性与正确性。
而当Coder选择使用自己编写的信号量函数时,在应用程序初始化阶段,系统将要调用一个由用户编写的初始化函数以完成信号量的初始化以及其他的一些初始化工作。此调用必须在程序真正开始执行到入口点之前就完成,以保证程序执行的正确性
[视频截图]
下载地址回复后见: **** Hidden Message *****
学习一下看看 虽然看不懂,还是支持楼主。继续加油 刘小徐520 发表于 2015-11-20 20:49
虽然看不懂,还是支持楼主。继续加油
膜拜大牛 ! 这是什么原理啊 醉了,为什么我完全看不懂 好留笔的东西收藏了 残忍的接口 发表于 2015-11-20 21:53
好留笔的东西收藏了
{:5_117:}别忘评分。 残忍的接口 发表于 2015-11-20 21:53
好留笔的东西收藏了
回复可见的 下载地址 这个是什么东西啊!