vxWorks 内核 shell 能力
vxWorks kernel shell abilities
我的车上安装了一个汽车导航系统,我发现它是 运行ning vxWorks 6.9.3。
我想要实现的是更改导航系统的一些隐藏设置。
小介绍:导航系统可以通过蓝牙连接到互联网。我设置了小型网络服务器,它唯一能做的就是检测客户端的 IP 地址。我从主机浏览器打开该网站并检测到主机的 IP 地址。比我能够扫描它打开的网络端口。
原来是打开了23端口。我可以在那里远程登录。
它不需要任何密码或登录,它会报告操作系统信息:Windriver vxWorks 6.9.3
我可以在此处运行 执行各种命令、检查文件系统等。
但我不知道我怎样才能改变一些东西。我什至找到了将文件从 USB 密钥传输到设备的方法。
我发现我想更改的所有设置都存储在.sqlite 文件中。其中一些是 gzip 压缩的,并且有带有校验和的 .inf 文件。校验和计算算法是专有的,所以我不能将 .sqlite 文件从设备传输到 usb-key,改变一些东西,而不是 gzip 并计算新的校验和。
我认为 OS 可以以某种方式与内存中的 .sqlite 文件交互,而无需解压缩它们。
那么,有什么方法可以在使用 vxWorks 内核 shell 的设备上打开 sqlite shell 吗?
如果是,那将是完美的,足以实现我想要的任何东西。
如果无法实现,有人可以给我一些建议,告诉我 vxWorks 内核有哪些可能性 shell?
VxWorks 上可用的命令shell 取决于加载的应用程序和内核本身。从 shell 你可以调用 VxWorks 加载的所有 "public functions"。您以类似 C 的语法输入函数调用,shell 解析参数,将它们压入堆栈并跳转到函数的地址,就像 C 中的普通函数调用一样。
检查函数是否存在的一个有用函数是 lkup "foo"
,它将列出名称中包含 "foo"
的所有函数(区分大小写!)。但它不会告诉您有关请求参数的任何信息。如果您没有通过 shell 将所有参数传递给函数,则解释器会在执行函数调用之前将一些零压入堆栈。这可能会导致非常奇怪的结果,甚至可能会损坏您的系统(取决于功能)...
如果您能够加载程序,您可能希望使用 symLib 的函数来迭代 VxWorks sysSymTbl
.
的所有符号
我的车上安装了一个汽车导航系统,我发现它是 运行ning vxWorks 6.9.3。
我想要实现的是更改导航系统的一些隐藏设置。
小介绍:导航系统可以通过蓝牙连接到互联网。我设置了小型网络服务器,它唯一能做的就是检测客户端的 IP 地址。我从主机浏览器打开该网站并检测到主机的 IP 地址。比我能够扫描它打开的网络端口。
原来是打开了23端口。我可以在那里远程登录。 它不需要任何密码或登录,它会报告操作系统信息:Windriver vxWorks 6.9.3
我可以在此处运行 执行各种命令、检查文件系统等。 但我不知道我怎样才能改变一些东西。我什至找到了将文件从 USB 密钥传输到设备的方法。
我发现我想更改的所有设置都存储在.sqlite 文件中。其中一些是 gzip 压缩的,并且有带有校验和的 .inf 文件。校验和计算算法是专有的,所以我不能将 .sqlite 文件从设备传输到 usb-key,改变一些东西,而不是 gzip 并计算新的校验和。
我认为 OS 可以以某种方式与内存中的 .sqlite 文件交互,而无需解压缩它们。 那么,有什么方法可以在使用 vxWorks 内核 shell 的设备上打开 sqlite shell 吗? 如果是,那将是完美的,足以实现我想要的任何东西。
如果无法实现,有人可以给我一些建议,告诉我 vxWorks 内核有哪些可能性 shell?
VxWorks 上可用的命令shell 取决于加载的应用程序和内核本身。从 shell 你可以调用 VxWorks 加载的所有 "public functions"。您以类似 C 的语法输入函数调用,shell 解析参数,将它们压入堆栈并跳转到函数的地址,就像 C 中的普通函数调用一样。
检查函数是否存在的一个有用函数是 lkup "foo"
,它将列出名称中包含 "foo"
的所有函数(区分大小写!)。但它不会告诉您有关请求参数的任何信息。如果您没有通过 shell 将所有参数传递给函数,则解释器会在执行函数调用之前将一些零压入堆栈。这可能会导致非常奇怪的结果,甚至可能会损坏您的系统(取决于功能)...
如果您能够加载程序,您可能希望使用 symLib 的函数来迭代 VxWorks sysSymTbl
.