- 博客(19)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 C语言调用汇编命令实现
C语言调用机器码令实现编写被调用C代码#include <stdio.h>int add(int a,int b){ return a+b;}编译,注意添加*-c*参数,不然会因为没有main函数报错gcc -c add.c获得编译后文件的机器码objdump -j .text -d add.o执行命令结果如下:add.o: file format elf64-x86-64Disassembly of section .text:
2021-01-12 23:26:19 695
原创 Java探针-基于javaagent的http请求记录
在了解javaagent的创建后,今天将尝试一种更高级的用法——类替换,并用其实现Http请求地址的记录功能。javaagent允许我们在项目启动时的类加载阶段或者项目运行后进行类的替换,两者的替换方式相同,都是借助入口函数Instrumentation对象进行操作,回顾下两种方式的入口函数:1.perman入口函数,由JVM参数配置在程序启动时的类加载阶段引入详见《Java探针-javaagent由浅入深(一)》 import java.lang.instrument.Instrume
2020-06-29 23:44:07 2462
原创 jackson-databind远程代码执行漏洞(CVE-2020-8840)修复与测试
漏洞介绍攻击者可以利用此漏洞通过JNDI注入的方式执行本地Web容器下的任意代码,后文中将测试LDAP方式的远程代码调用,受影响版参见:NVD。修复建议网上能找到的大部分修复建议是将jackson-databind的版本升级到2.9.10.4或后续版本,此方法的确行之有效,但是对于使用JDK1.6的老项目就比较尴尬,因为至2.8版本后jackson-databind字节码不再兼容JDK1.6...
2020-05-03 13:54:06 4038
原创 C语言实现双向共享栈
ShareStack.h#pragma once/*顺序表的两端分别作为双栈的栈底,当整个线性表没有空间时,双栈满*/#define MAX_SIZE 20#define ERROR -1#define OVERFLOW -2#define LEFT 0#define RIGHT 1typedef char ElemType;typedef struct { Elem...
2020-02-20 22:38:34 951
原创 C语言实现双端循环队列
DeQueue.h#pragma once/*双端队列(注:不是双向队列):是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。*/#define MAX_SIZE 20#define ElemType int#define OVERFLOW -2#define ERROR -1typedef struct { E...
2020-02-19 22:28:00 1991
原创 C语言实现循环队列
SequenceQueue.h#pragma once#define ElemType char#define QuenueSize 5#define ERROR -1#define OVERFLOW -2typedef struct SequenceQueue { ElemType* base; int front; int rear; int size;} Qu...
2020-02-10 11:04:31 342
原创 C语言实现链队列
LinkQueue.h#pragma once#define ElemType char#define ERROR -1#define OVERFLOW -2typedef struct QueueNode{ ElemType data; struct QueueNode* next;} Node,*PNode;typedef struct { PNode front...
2020-02-06 16:47:35 397
原创 C语言链栈实现
LinkStack.h#pragma once#include <stdlib.h>#define SElemType char#define ERROR -1#define OVERFLOW -2typedef struct L_Stack{ SElemType data; struct L_Stack* next;}*Stk,Stack;/**以链表...
2020-02-05 12:58:42 337
原创 C语言顺序栈实现
S_Stack.h#pragma once#include <stdlib.h>#include <stdio.h>//栈数据类型#define SElemType char//栈初始大小#define SSize 5//栈扩容增量#define SInc 5//内存溢出异常#define OVERFLOW -2//错误#define ER...
2020-02-04 17:41:58 304
原创 C语言单向链表实现
LinkList.h#pragma oncetypedef int SDataType;//链表节点 typedef struct SListNode { SDataType _data; struct SListNode* _PNext;}Node,*PNode;typedef struct SList { //封装链表结构,类似于头节点 PNode _pHead;//指...
2020-02-03 19:07:40 229
原创 Arch Linux下"Network is unreachable"解决办法
一、首先确定你的问题是否与此相同Arch Linux更新后大部分网站无法访问,使用Ping命令出现“Network is unreachable”,部分网站可以Ping通,比如:www.baidu.com。二、解决方案以root用户执行dhcpcd命令; 重新启动系统; 使用ip a命令查看对应网卡是否正确分配了ipv4地址,如下: inet 192.168.1.9/24 ...
2020-01-02 22:28:02 2803
原创 「札记」Java中类的概念
很久以前,计算机科学家就认识到了数据和操作之间的这种紧密关系。这种关系催生了抽象数据类型(abstract data type,ADT)这一思想。抽象数据类型是由一个表示数据项的抽象对象集合和一些列对这些对象所做的操作构成的。(……)虽然抽象数据类型可以用Pascal这样传统的面向过程语言来实现,但用C++和Java这样的面向对象语言来实现要更为方便,这些语言用类(class)来支持抽象数据类型。...
2019-12-02 22:37:46 213
原创 原码、反码、补码
前言:每次声明整形变量时都会思考一个问题,为什么最大值和最小值不是关于“0”点对称的两个数,比如在java中byte类型的最大值是127,最小值是-128。其实这个问题并不难,只要知道机器数的存储方式就能找出答案,但是因为这个问题引发了我之后的一系列思考……现在就从最初的问题开始,记录下我思考的过程。一、机器数机器数是将符号"数字化"的数,是数字在计算机中的二进制表示形式。机器数...
2019-11-25 22:17:55 1947
原创 Java探针-javaagent由浅入深(二)
这篇文章主要介绍如何通过maven工具构建javaagent,实质原理相同,只是借助maven工具更符合工作中的应用场景,所以简单介绍下,同时将着重介绍一种在运行时引入javaagent的方法。一、利用maven工具构建javaagent1、创建maven项目2、按照前文中的方法创建Agent类,并正确编写permain(String,Instrumentation)方法3、编写m...
2019-11-17 16:38:32 913
原创 Java探针-javaagent由浅入深(一)
前言(可忽略):近来因为公司要对我所负责的系统进行安全性的检测,项目需要引入VulHunter这个工具,引入的方式正是在Web容器上添加javaagent作为JVM参数,如:-javaagent:/home/haye/vulhunter.jar。这种引入对我的项目代码本身可以说是零侵入,但却实实在在的扫描到了项目存在的漏洞,对此甚为好奇,遂决定研究下javaagent的用法。javaagent...
2019-10-09 22:33:36 2854 3
原创 Java语言Scoket编程进阶(一)(多线程、双向通信)
在《Java语言Scoket编程及实现原理浅析》一文中介绍了Java中Socket、ServerSocket的基本使用方法,本文将介绍一些Socket的进阶用法,实现一个多人的聊天室,技术要点主要包含以下两个方面:一、Socket结合线程使用,实现服务端对客户端的一对多链接(TCP协议)我们知道对于单个服务端的IP和端口是固定的,即我们在创建ServerSocket对象时传入的构造参数,那...
2019-10-07 18:59:59 385
原创 Java语言Scoket编程及实现原理浅析
上一篇文章中介绍了C语言的Socket编程,其主要目的是说明Socket实现是基于网络层IP协议和传输层TCP协议或UDP协议的,网络层、传输层的协议又是操作系统来实现的,所以在C语言中不同操作系统对应着不同的函数库调用,而Java语言具有平台无关性,也就是说不会因操作系统不同而依赖不同的类库,这篇文章将介绍基本的Socket编程及Java层面的实现原理。一、Java语言Socket编程服...
2019-06-23 20:08:23 523
原创 C语言socket编程
这篇文章的侧重点不是讲如何用C语言写好,甚至是写出一个完整的Socket服务端/客户端(以我单薄的C语言编程能力也很难做到),而是因为C语言更加接近底层,个人觉得为了今后更好的学习互联网数据传递而去了解底层的实现是有一定必要的(这里的底层也将随着我个人的经验和对语言的掌握程度逐步向下加深)。C语言在Linux和Windows上实现Socket的源码大致相同,笼统的可以分为以下四个步骤:1、...
2019-05-24 22:26:35 1954
原创 VirtualBox下安装MS-DOS及MASM——搭建汇编语言环境
一、准备工作1、下载并安装Oracle VM VirtualBox2、下载MS-DOS6.22安装文件(推荐去MSDN的官网下载)这里推荐下载英文的6.22版本,下载后是一个EXE格式自解压文件,解压后可以在目录下找到<DISKS>文件夹,文件夹内包含了1.22UPG#(1-4)、1.44UPG#(1-3)两种大小不同的软盘镜像文件,我猜想是为了兼容当年的两种软盘规格,因为...
2018-08-27 14:54:46 7358 7
MS-DOS with MASM.zip
2019-12-01
新人乞讨,求大牛指导一下android如何解析chm
2016-10-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人