
AL是打开方式:8位2进制,
当第0到2位为:
000的时候是只读,001是写方式,010是读/写方式
第3位保留,值为0
第4到6位为共享模式:
000:兼容模式
001:不共享
010:拒绝写
011:拒绝读
100:不拒绝任何 *** 作
第7位是继承标志,1就继承句柄
例如:我想打开一个文件,读/写方式,拒绝不允许别的程序写入,则AL为:
0 010 0 010 b
=22h
则 mov al,22h 即可
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
能不能打开文件和文件扩展名没有必然联系
之所以提示访问被拒绝,是由于文件正在被其他程序打开(独占式的),试着退出打开这个c文件的程序,然后再试试汇编看能不能打开了
-=-=-=-=-=-=-=-=-=-=-=-
lea dx,FILENAME
mov al,10h
mov ah,3dh
int 21h
执行完这些语句后如果打开失败,AX返回的就是错误号,你可以通过这些错误号来查找下原因
386
model flat,stdcall
option casemap:none
include C:\masm32\include\windowsinc
include C:\masm32\include\gdi32inc
include C:\masm32\include\user32inc
include C:\masm32\include\kernel32inc
includelib C:\masm32\lib\gdi32lib
includelib C:\masm32\lib\user32lib
includelib C:\masm32\lib\kernel32lib
const
szFileName db "C:\testexe",0
code
_DeleteFile proc AddrDeleteFileName
invoke DeleteFile,AddrDeleteFileName
_DeleteFile endp
start:
invoke _DeleteFile,addr szFileName
end start
C语言里面的语句found(i,&j,&k,s);
翻译为汇编语言是下面这样的:
PUSH
[I]
PUSH
J
PUSH
K
PUSH
[S]
CALL
_found
现在看_FOUND的入口代码:
PUSH
BP
MOV
BP,SP
你现在明白[BP]是什么了吗?是原来的BP
[BP+2]是CALL处的IP
[BP+4]是什么知道吗?就是实际参数S的值
现在明白了吧。
目前的反编译软件,只存在将机器指令码反汇编成汇编代码,不存在将汇编代码反编译成C语言的,因为汇编代码是低级语言,最接近于机器码(具体可查看不同硬件平台的技术资料),每条汇编指令都对应一个固定的机器码,这样进行反汇编是可行的,而C语言属于高级语言,编译器没有能力将汇编语言翻译成C或更高级的语言。
额,看了下,指令格式是 51的; 代码像是 反汇编的代码,或者新手写的命名太不规范了!
转换到是可以转换的,汇编到c还是可以的,但是如果没价值的话就不要翻译了,直接写就好!
工程逆向,比较费神!
如果需要帮忙的话,我们可以相互交流!
满意的话赞一个,呵呵
1、打开IAR FOR STM8工程。
2、编一段C语言的延时程序,作为例子。
3、如何在目前实例上,添加我们的汇编。
4、编译一下是否可以编译通过,编译提示OK。
5、进入仿真界面,是否可以运行。把断点设在汇编的程序上,运行后,可以在断点处停止,说明仿真也是正常的。
以上就是关于用汇编如何打开.C文件全部的内容,包括:用汇编如何打开.C文件、谁帮我写一个汇编程序调用c函数的例子,用masm。是不是要include c函数文件,还得改名为.inc才行、c语言中调用汇编程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)