TC官方合作论坛

 找回密码
 立即注册
查看: 768|回复: 5
打印 上一主题 下一主题

[已解决] 为什么获取自身大小跟属性查看的大小不一样的?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-5 09:42:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我用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多,为什么?小白一个,请教各位大神
回复

使用道具 举报

地板
发表于 2014-8-5 14:23:05 | 只看该作者
.. 一般只有脱壳才会被变动大小 ..    假如把  jnz  给你改成 jmp 之类的手段 或者是等长度的修改  也不会变动大小  
楼主可以采用二进制打开自身文件 并用CRC效验  写入自身文件尾的后八位或其他空白地方
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2014-8-5 16:02:57 | 只看该作者
看来这个方法没用了谢谢
回复 支持 反对

使用道具 举报

5#
发表于 2014-8-5 14:31:30 | 只看该作者
如此美丽。 发表于 2014-8-5 14:23
.. 一般只有脱壳才会被变动大小 ..    假如把  jnz  给你改成 jmp 之类的手段 或者是等长度的修改  也不会 ...

以前用MD5,结果最近网上看见大神现场复制MD5到另一个文件,艾玛吓尿了
回复 支持 反对

使用道具 举报

板凳
发表于 2014-8-5 14:20:49 | 只看该作者
回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2014-8-5 11:17:09 | 只看该作者
如果我想得到文件大小来检测我的辅助有没有被动过手脚,应该怎样做?
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-26 07:33 , Processed in 0.146301 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表