|
VC6的错误
这只能说是VC6太老了! sizeof()以前是运算符,不是函数。以前是在编译期计算的。像int、char等这些类型的长度都是固定的,32位机器上直接用4替代sizeof(int);其它也是如此。复杂一些的比如结构,就是把各数据成员的长度加起来(最多就是考虑对齐)!编译器通过查找符号表,来确定某种类型的长度,然后返回该长度!C99标准sizeof()是运行期计算了,可以说是函数了!之所以C99的sizeof()是运行期运算,是因为C99支持了变长数组,所以想知道真正的长度就只能是在运行期才能知道了! |
|
OllyScript源代码阅读笔记
谢谢斑竹哈!俺们还没开编译原理的课程,好像要到大三才开,小弟以前自己看龙书一知半解的,请斑竹多指教!听师兄师姐们说编译原理中的形式语言与自动机理论比较重要,最近在看Ullman大牛的书! |
|
[原创]我眼中的数据对齐
楼主讲得很好呀! 不过还是建议楼主在文章中讲清楚是在什么操作系统下的实践。因为在Win32下的数据对齐是默认32位的,但在DOS下是16位的。例如一个DWORD在Win32下是4字节,但在DOS下只是2字节!不说清楚的话极易造成初学者的混淆!另外在64位操作系统中,这些数据的大小还没有真正统一起来,Microsoft在Windows 64中规定了int,float等等还是4字节的,但只是指针转为8字节了!偶们老师说写论文一定要严谨,建议楼主作相应的补充! |
|
天底下有竟这事+OD插件发问?
可以在被调试进程的代码段的某个位置(例如最后!),先计算一下需要改写多少个字节,然后保存从那个位置开始的N个字节,再把那N个字节改写成你自己的代码!最后把EIP改为那个位置,这样程序就会从那里开始运行了!等运行完毕后再构造一条jmp指令跳回去原来的位置!并把原来代码段的内容重新恢复回去!这样就可以达到目的了!而且兼容性很好! |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值