![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序设计
文章平均质量分 79
阿航的博客
一切都是最好的安排!
展开
-
Joern的安装与使用
一.前言最近在研究C/C++源码的漏洞挖掘,需要用到Joern工具将源码转换为图来分析,于是开始寻找关于Joern的安装教程。首先是按照别人的博客安装,发现大部分依赖库都是远古版本,根本安装不了,于是找官方教程,找到了一个官方文档(准确来说应该是旧的官方文档,文档底部显示2014年),安装的版本为joern-0.3.1,安装过程巨麻烦,且同样存在依赖库找不到的问题。于是就想写下这篇博客,初衷就是希望大家在安装Joern时可以少走弯路,避免我踩过的坑,减少不必要的时间浪费!二.关于Joern的简介Joe原创 2021-11-26 16:15:19 · 3176 阅读 · 1 评论 -
基于代码属性图和Bi-GRU的软件脆弱性检测方法
一.摘要提出了一种基于代码属性图和Bi-GRU的软件脆弱性检测方法。该方法通过从函数的代码属性图中提取出抽象语法树序列、控制流图序列作为函数表征的表征方式,减少代码表征过程中的信息的损失,并通过选取Bi-GRU来构建特征提取模型,提高对脆弱性代码的特征提取能力。实验结果表明,与以抽象语法树为表征方式的方法相比,该方法最大可提高35%的精确率和22%的召回率,可改善面向多个软件源代码混合的真实数据集的脆弱性检测效果,有效降低误报率和漏报率。二.本文贡献提出了一种基于代码属性图的软件脆弱性智能检测方法原创 2021-11-22 16:06:25 · 5708 阅读 · 2 评论 -
Android逆向分析实例(一)-绕过搜狗输入法的签名验证
写在前面:我们在做逆向工程时,经常会对apk文件进行反编译,分析其中的代码,然后重打包,重签名。但本apk为了防止重打包,设置了签名验证,它会验证当前apk的签名是否与官方的一致,如果不一致就会提示盗版信息,且无法正常打字。原apk下载载接首先介绍下签名验证的两种方式:一种是服务器上的签名验证,另一种则是本地的签名验证。区分两种验证的方法:将apk以压缩包的形式打开删除原签名后再签名,如果在断网的情况下出现异常,则是本地的签名验证;如果首先出现的是提示网络没有连接,则是服务器端的签名校验..原创 2021-04-13 19:43:04 · 1108 阅读 · 4 评论 -
程序依赖图(Program Dependency Graph)-(PDG)
1.定义百度百科:程序依赖图(Program Dependence Graph)是程序的一种图形表示,它是带有标记的有向多重图。程序依赖图能够表示程序的控制依赖和数据依赖关系。程序依赖图(Program Dependence Graph)是关于源代码的一种图模型。源代码的图模型包括流程图(Control Flow Graph)、控制依赖图(Control Dependence Graph)、数据流程图(dataDependence Graph)、程序依赖图(Program Depend..原创 2021-04-21 01:34:25 · 5210 阅读 · 0 评论 -
控制流图(Control Flow Graph)-(CFG)
1.定义百度百科:控制流图(Control Flow Graph, CFG)也叫控制流程图,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向, 也能反映一个过程的实时执行过程。Frances E. Allen于1970年提出控制流图的概念。此后,控制流图成为了编译器优化和静态分析的重要工具。维基百科:原文:In a control-flo..原创 2021-04-21 01:31:25 · 42443 阅读 · 3 评论 -
抽象语法树(AST)
1.简介抽象语法树(abstract syntax code,AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,这所以说是抽象的,是因为抽象语法树并不会表示出真实语法出现的每一个细节,比如说,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现。抽象语法树并不依赖于源语言的语法,也就是说语法分析阶段所采用的上下文无文文法,因为在写文法时,经常会对文法进行等价的转换(消除左递归,回溯,二义性等),这样会给文法分析引入一些多余的成分,对后续阶段造成不利影响,甚至会使...原创 2021-04-20 13:33:06 · 2259 阅读 · 0 评论 -
C++输出101-200之间所有的素数
#include <iostream>using namespace std;void prime(int n){ int flag=1; for(int j=2;j<n;j++) { if(n % j == 0){ flag=0; break; } } if(flag) { cout<<n<<endl; }...原创 2020-05-05 14:50:47 · 1847 阅读 · 0 评论 -
C++输出斐波那契数列的前n项
#include<iostream>using namespace std;int fib(int n){ if(n==1 || n==2) { return 1; } else{ return fib(n-1)+fib(n-2); }}int main(){ int n; cout<<"请输入n的值:"; cin>>n; ...原创 2020-05-05 14:40:55 · 8702 阅读 · 3 评论 -
C语言实现百钱买百鸡问题
这种问题直接3个for循环暴力求解就行了#include<stdio.h>int main(){ int x, y, z; //x,y,z分别为公鸡,母鸡,小鸡的数量 for (x = 0; x <= 100; x++) { for (y = 0; y <= 100; y++) { for...原创 2020-02-27 17:33:28 · 14637 阅读 · 6 评论 -
C语言实现任意输入一个数,判断是否为回文数
#include<stdio.h>void main(){ int n, m, x = 0; printf("请输入一个正整数:\n"); scanf("%d", &n); m = n; while (n>0) { x = x * 10 + n % 10; n = n / 10; ...原创 2020-02-27 17:28:12 · 9260 阅读 · 5 评论 -
C语言实现输出所有的水仙花数
#include<stdio.h>#include<math.h>void main(){ int i; int x, y, z; for (i = 100; i < 1000; i++) { x = i % 10; y = i % 100 / 10; z = i / 100; ...原创 2020-02-27 17:24:54 · 2851 阅读 · 3 评论 -
C语言实现16进制转10进制
#include<stdio.h>#include<string.h>#include<math.h>int func(char a[]){ int n = strlen(a);//判断字符串的长度函数 int i, j = 0, num = 0; for (i = 0; i < n; i++) { ...原创 2020-02-27 17:20:24 · 9524 阅读 · 4 评论