能力值:
( LV3,RANK:20 )
|
-
-
2 楼
自己看代码不就知道了?
function StrCopy(Dest: PChar; const Source: PChar): PChar;
asm
PUSH EDI
PUSH ESI
MOV ESI,EAX
MOV EDI,EDX
MOV ECX,0FFFFFFFFH
XOR AL,AL
REPNE SCASB
NOT ECX
MOV EDI,ESI
MOV ESI,EDX
MOV EDX,ECX
MOV EAX,EDI
SHR ECX,2
REP MOVSD
MOV ECX,EDX
AND ECX,3
REP MOVSB
POP ESI
POP EDI
end;
相对而言,delphi编译的东西溢出机会比较少,原因如下:
borland(delphi)编译器自己定义了字符串类型和处理约定,(字符串常量不是放在数据段里面.而是放到所在函数的后面),此特性在很大程度上避免了读写缓冲区的溢出。
剩下的就似乎只能挖掘指针型溢出,对于这个,由于delphi的VCL特性,大量的指针都是基于RTTI/MT表(虚拟内存表)来相对寻址的,会把人搞得死死的。
当然,安全与否,跟写代码的人逻辑有更大关系。学到一定程度,你应该是直接十六位修改器就能看出PE的意图,而不会再执着于语言。
|
|
|