TC官方合作论坛

标题: 为什么获取自身大小跟属性查看的大小不一样的? [打印本页]

作者: tobydu    时间: 2014-8-5 09:42
标题: 为什么获取自身大小跟属性查看的大小不一样的?
我用R大的代码获取本身的大小
    hFile=window.getmyhwnd()
    hHeap=dllcall("Kernel32.dll","int","GetProcessHeap")//此行以及以下一行为:分配内存,因为GetFileSize第二个参数要传整型指针,所以我们自己分配一块4字节的内存区域,首地址当作指针给API.
    lpFileSizeHigh=dllcall("Kernel32.dll","int","HeapAlloc","int",hHeap,"int",0,"int",4)
    FileSize=dllcall("kernel32.dll","int","GetFileSize","int",hFile,"int",lpFileSizeHigh)//得到大小.返回大小低字节,第二个参数为指针,指向存放文件大小高字节的内存区域.
    FileSizeHigh=进程.读4byte(-1,lpFileSizeHigh)//这里也可以换成ReadProcessMemory,因为需要的功能比较简单就用自带的API吧.
    dllcall("Kernel32.dll","int","HeapFree","int",hHeap,"int",0,"int",lpFileSizeHigh)//释放分配的内存区域.
    FileSize+=FileSizeHigh*256//"组合"成真正的文件大小.
    help.messagebox(FileSize)

这里显示是4M多,但是在windows看文件的大小才3M多,为什么?小白一个,请教各位大神

作者: tobydu    时间: 2014-8-5 11:17
如果我想得到文件大小来检测我的辅助有没有被动过手脚,应该怎样做?
作者: 如此美丽。    时间: 2014-8-5 14:20
http://bbs.tyuyan.com/forum.php? ... 6%E5%A4%A7%E5%B0%8F
作者: 如此美丽。    时间: 2014-8-5 14:23
.. 一般只有脱壳才会被变动大小 ..    假如把  jnz  给你改成 jmp 之类的手段 或者是等长度的修改  也不会变动大小  
楼主可以采用二进制打开自身文件 并用CRC效验  写入自身文件尾的后八位或其他空白地方
作者: b44412545    时间: 2014-8-5 14:31
如此美丽。 发表于 2014-8-5 14:23
.. 一般只有脱壳才会被变动大小 ..    假如把  jnz  给你改成 jmp 之类的手段 或者是等长度的修改  也不会 ...

以前用MD5,结果最近网上看见大神现场复制MD5到另一个文件,艾玛吓尿了
作者: tobydu    时间: 2014-8-5 16:02
看来这个方法没用了谢谢




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1