能力值:
( LV13,RANK:410 )
|
-
-
2 楼
invoke GetModuleFileName,NULL,addr @szFileName,MAX_PATH
add eax,addr @szFileName
@@:
dec eax
cmp byte [eax],'\'
jnz @b
inc eax
eax=Name
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
[QUOTE=无聊的菜鸟;1099016]invoke GetModuleFileName,NULL,addr @szFileName,MAX_PATH
add eax,addr @szFileName
@@:
dec eax
cmp byte [eax],'\'
jnz @b
inc eax
eax=Name[/QUOTE]
;修改了一下
invoke GetModuleFileName,NULL,addr @szFileName,MAX_PATH
invoke lstrlen,addr @szFileName
lea esi,@szFileName
add esi,eax
@@:
dec esi
cmp byte ptr [esi],'\'
jnz @B
inc esi
invoke MessageBox,NULL,esi,NULL,MB_OK
|
能力值:
( LV13,RANK:410 )
|
-
-
4 楼
lstrlen没有必要,因为GetModuleFileName的返回值是拷贝到缓冲区内的字节数,所以可以直接完成lstrlen的作用。
另外,如果你不介意使用Unicode的话,那么代码可以更短一些。但是可能会产生通用性的问题。
mov eax,fs:[30h]
mov eax,[eax+0ch]
mov eax,[eax+0ch]
mov eax,[eax+20h]
这里eax指向的就是Unicode字符串程序文件名的实际内容。
|
|
|