无忧启动论坛

 找回密码
 注册
搜索

内置函数的调用?

查看数: 3664 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-5-25 14:43

正文摘要:

我在这儿:http://code.google.com/p/grub4do ... wse/wiki/grub4dos.h找到了grub4dos.h,不知道是不是和chenall提到的相同? 看了看,基本上看不懂; 不过我有以下猜测: define strstr ((char *(*)(const char *, ...

回复

zbkh 发表于 2013-5-26 22:45:30
chenall 发表于 2013-5-26 22:04
忘了这个strncat和c标准里面的是不一样的。。

我上面的是C语言的。。

哦,谢谢chenall
chenall 发表于 2013-5-26 22:04:41
zbkh 发表于 2013-5-26 21:11
我又试了试,但是就只显示a了哦:


忘了这个strncat和c标准里面的是不一样的。。

我上面的是C语言的。。

GRUB4DOS里面的n值,会连前面的也一起算进去。

所以,2的时候就只有a了,因为a\0刚好两个字符。

具体的自己多测试一下就知道了。
chenall 发表于 2013-5-26 08:15:26
strncat 最后一个参数是int不是指针。直接用数字。你这里用2就行了。
zbkh 发表于 2013-5-25 21:44:41
chenall 发表于 2013-5-25 15:24
我不知你是如何查找的....
用Google 搜grub4dos.h ,第一个就是了.还找半天,可能是用的百度的原因..
用百度 ...

谢谢chenall!百度习惯了,的确常用百度!呵呵!不过看样子,谷歌更能帮上大忙!谢谢!
chenall 发表于 2013-5-25 15:24:49
我不知你是如何查找的....
用Google 搜grub4dos.h ,第一个就是了.还找半天,可能是用的百度的原因..
用百度很多技术资料都找不到的,建议还是放弃吧.

这些定义可以不用去管的,使用方法和C语言的函数一样.

像strstr函数用法参考
http://www.kuqin.com/clib/string/strstr.html

这些定义我以前也不懂的,后面对C语言比较了解一些之后才明白些,需要理解C语言的指针.
再看定义
#define strstr ((char *(*)(const char *, const char *))((*(int **)0x8300)[11]))
1.char *(*)(const char *, const char *)
(*) 说明这个是个指向函数的指针.
char *是返回值,返回指向字符串的指针.
(const char *, const char *)对应的参数.
后面的(*(int **)0x8300)[11])是该函数对应的地址.
0x8300这个地址上的值是一个指针,指向GRUB4DOS提供的函数指针列表开始处,列表中又是一系列的指针指向真实的函数.


不过像STRSTR之类的函数,如果是用来编写外部命令可以使用,若是在命令行下就不好使了,除非你同样用指针地址.
命令行使用的例子
::在0x60000地址处写入字符串abcd**1234供测试
write (md)0x300+1 abcd**1234\0
::调用strstr函数查找"**"
call Fn.11 0x60000 "**"
set /A ret=%@retval%
得到ret的值应该是0x60004.

命令行调用函数时字符串可以直接提供也可以用一个数值(代表指针地址)

::显示0x60000处的字符串内容
call Fn.0 0 0x60000
直接提供字符串
call Fn.0 0 "atesta"

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-10 05:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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