【小白福利】对原创技术贴过vmp3.x调试检测的详细看法
先附上大神的帖子https://www.52pojie.cn/thread-725249-1-1.html
作为小白的我现在还没明白是什么意思,今天看了一个破解教程,运用的方法类似,今天来详细解读一下
大佬勿喷
大佬勿喷
大佬勿喷
我是随便找的一个程序,也不知道是不是vmp,反正也差不多
软件是运行不起来的,然后重新载入od,下大佬的那个断点
下断后运行程序,程序会断下
到达上图位置后,将f改成0
修改完后将断点删除,看看有没有惊喜
技术非原创,我只是在帮助和我一样的小白
如果认为我侵权,可私信我,我删帖
如果那里不对,还望大佬指正
大佬勿喷
大佬勿喷
大佬勿喷 我叫蛋dan 发表于 2018-5-12 16:58
楼主你知道那个localAlloc是什么函数么 我想弄懂原理
参数:
uFlags指定怎样去分配内存。如果zero被指定,默认的是LMEM_FIXED标志。此参数有三种标志:
LMEM_FIXED:分配固定内存,返回值是指向一个内存对象的指针。
LMEM_ZEROINIT:初始化内存内容为zero。
LPTR:结合了LMEM_FIXED和LMEM_ZEROINIT这两种标志。
LMEM_MOVEABLE:分配可移动内存。
LMEM_DISCARDABLE:分配可删除的内存。
uBytes:指定要分配的字节数。
Return Values
A handle to the newly allocated memory object indicates success.
NULL indicates failure.
To get extended error information, call GetLastError.
返回值:成功则返回一个指向新分配的内存对象的句柄。
NULL表明函数失败。
要得到更多的错误信息的话,调用GetLastError。
Remarks
备注:
该函数用局部内存对象的分配(全局内存对象的分配使用函数GlobalAlloc)。
如果堆中没有充足的自由空间去满足我们的需求,LocalAlloc返回NULL。因为NULL被使用去表明一个错误,虚拟地址zero从不被分配。因此,很容易去检测NULL指针的使用。
如果函数成功的话,它至少会分配我们指定大小的内存。如果分配给我们的数量多于我们指定的话,这个进程能使用整个数量的内存。
可以使用LocalSize函数去检测被分配的字节数。
可以使用LocalFree函数去释放这段内存。
对于分配的可移动内存、可删除内存读取前需加锁(相关函数LocalLock)否则将无法正常读取,读取完成后需解锁(相关函数LocalUnlock)否则无法使用LocalFree函数来释放内存。
对于Windows CE versions 1.0 and 1.01,每个进程的本地堆不能超过1MB。然而,一个进程能够使用HeapCreate函数创建多个堆,而且每个堆分配的字节能最大能达到1MB。
对于Windows CE版本1.0到2.12,分配在192K数量范围内的约为0到7个字节的大小内存——在这一尺寸范围的某些内存块——引起相应的调用LocalFree失败。返回的代码是ERROR_INVALID_PARAMETER。
来自搜狗百科 123-木头人 发表于 2018-5-12 18:33
参数:
uFlags指定怎样去分配内存。如果zero被指定,默认的是LMEM_FIXED标志。此参数有三种标志:
VMProtect v.2.07 - X.X2003-2013 VMProtect Software - www.vmpsoft.com知道这个壳怎么脱吗??有没有详细的教程 楼主你知道那个localAlloc是什么函数么 我想弄懂原理 分配函数? 我叫蛋dan 发表于 2018-5-12 16:58
楼主你知道那个localAlloc是什么函数么 我想弄懂原理
额~别问我,去找个大佬问问吧 路过,学习一下 谢谢楼主,很详细,很容易理解。 这个图文比上次那个看的明白多了 谢谢楼主 学习学习