小编Luc*_*age的帖子

通过内核模块在ARMv7上进入管理程序模式

我正在开发一个项目,我有一个带有ARMv7处理器(Cortex A15)和OpenWRT OS的路由器.我在路由器上有一个shell,可以使用insmod加载内核模块.

我的目标是在C中编写一个内核模块,它更改HVBAR寄存器,然后执行hvc指令以使处理器处于hyp模式.这是一个科学项目,我想检查一下我是否可以将自己的虚拟机管理程序放在正在运行的系统上.但在我开始编写自己的虚拟机管理程序之前,我想检查是否以及如何将处理器置于hyp模式.

根据这张图片来自armv7-a手册B.9.3.4,系统必须处于非安全模式,而不是用户模式,SCR.HCE位必须为1.

在此输入图像描述

我的问题是如何使用C内核模块和内联汇编来准备处理器,然后执行hvc指令.我想用内核模块做这个,因为我从PL1开始.这个伪代码描述了我想要实现的目标:

  1. 调用smc //进入监控模式
  2. 将SRC.HCE设置为1 //以启用hvc指令
  3. 将SRC.NS设置为1 //以将系统设置为不安全
  4. call hvc#0 //调用hvc指令产生一个hypervisor异常

c virtualization arm openwrt hypervisor

10
推荐指数
1
解决办法
446
查看次数

在 Kubernetes 上发布新版本时自动更新容器映像

我有一个私人存储库。我想在此私有存储库上更新映像时自动更新 Kubernetes 上的映像。我怎样才能做到这一点?

containers docker kubernetes devops

8
推荐指数
3
解决办法
5536
查看次数

7
推荐指数
3
解决办法
1万
查看次数

如何对子流程进行seccomp?

我想用它execvp来创建一个子进程并对其进行 seccomp (只给它读写权限,没有open)。为了实现这一目标,我必须调用函数的Seccomp之前 execvp(也称open),因此我应该给自己execvpopen许可。但这也意味着我给了由此execvp类权限打开的子进程。有没有办法阻止子open进程调用(例如,在调用 seccomp 之前将其加载到内存中)?

#include <iostream>
#include <vector>
#include <seccomp.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

using namespace std;

int main()
{
    cerr << "Starting..." << endl;

    scmp_filter_ctx ctx;
    ctx = seccomp_init(SCMP_ACT_KILL); // default action: kill

    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigreturn), 0);
    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(exit), 0);
    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(read), 0);
    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(write), 0);
    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(brk), 0);
    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap), 0); …
Run Code Online (Sandbox Code Playgroud)

c++ linux sandbox seccomp

6
推荐指数
1
解决办法
1592
查看次数

Viber不断将单击的按钮URL放入对话

我正在制作一个聊天机器人应用程序,用于搜索航班。找到航班后,我将返回一个带有按钮的轮播,并希望用户在单击按钮后将其重定向到该网站。它起作用了,唯一的问题是单击按钮会将URL放入对话中。有什么方法可以打开URL而不进行对话吗?

我要发送到Viber REST API的JSON:

{
   "type":"rich_media",
   "min_api_version":6.8,
   "receiver":"asmS1TwIYkPVxpod3rNCYg==",
   "rich_media":{
      "Type":"rich_media",
      "ButtonsGroupColumns":6,
      "ButtonsGroupRows":7,
      "Buttons":[
         {
            "Columns":6,
            "Rows":4,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/Booking?flightId=1&sessionid=3b0f51f5-cf88-4d1e-a64b-1222e19b4702&adults=1&children=0&infants=0",
            "Text":"<b>Best Offer - 68.99 EUR</b><br />Bratislava to Nis on 18Oct at 14:10",
            "Image":"http://localhost:60219/api/v1/FlightInfo/FlightDetail/Viber?flightId=1&returnFlightId=",
            "TextVAlign":"bottom",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":1,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/Booking?flightId=1&sessionid=3b0f51f5-cf88-4d1e-a64b-1222e19b4702&adults=1&children=0&infants=0",
            "Text":"DEMO booking",
            "TextVAlign":"center",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":1,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"https://www.ryanair.com/gb/en/booking/home/BTS/INI/2019-10-18//1/0/0/0",
            "Text":"Book now",
            "TextVAlign":"center",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":1,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/FlightDetail?flightid=1",
            "Text":"Flight Details",
            "TextVAlign":"center",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":4,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/PriceAlert?departureAirportId=ce43057e-afe6-4592-8759-9ea9643bb566&arrivalAirportId=3f43e185-bba3-4216-813d-473bfdbb024d",
            "Text":"<b>Set the Price Alert for  BTS-INI</b><br …
Run Code Online (Sandbox Code Playgroud)

viber viber-api

6
推荐指数
1
解决办法
110
查看次数

Emacs中的Vim-like*/# - (下一个/前一个单词)?

我从Vim切换到Emacs,现在我为Emacs做了疯狂.
但是在Vim中有一个非常有用的技巧,我不能在Emacs中方便地使用,那就是找到下一个/前一个单词.这些在Vim中非常方便*/#.
最简单的方法是在点上移动到单词的开头,然后是Cs和Cw,使用Cs/Cr查找下一个/前一个单词.
然后我发现了掌握Emacs的另一个技巧,但仍然是一些小错误.
今天我找到了一个插件 - 在Emacs中模拟vim的vimpulse.我可以使用*/#那里只是喜欢Vim !! 但似乎vimpulse会自动启用Viper.

那么,任何其他方法来实现这个要求?或者,如果我使用vimpulse,我可以自动禁用Viper吗?

emacs

5
推荐指数
1
解决办法
371
查看次数