自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 西湖论剑 Dual personality复盘

在开始分析这个题之前,先介绍一个知识点:天堂之门天堂之门是一种利用Windows的WoW机制,在32位的进程中执行64位程序代码,达到反检测的目的(反静动态分析)。那么什么是WoW?他的全称是Windows 32 on Windows 64。众所周知,win64平台向下兼容,可以在x64平台上运行x86程序,而Windows之所以可以做到这点,就是因为使用了wow作为翻译层。而天堂之门就是利用了这个机制,在32位程序中插入64位程序代码,让逆向分析工具不能正常分析成功。

2023-03-14 21:23:58 270

原创 DLL注入-静态修改PE表

首先要知道,我们要完成的操作是通过修改PE结构来完成注入dll,PE中有关于模块导入的是输入表结构,而输入表是一个IID数组,那么想要将我们的dll导入到程序中就需要将一个我们构造的IID结构写入这个数组中,此时需要考虑我们新写入的IID结构大小,假设原IID大小为old,那么显然,由于只导入了一个函数,我们新的IID结构大小newIIDSize = Old+ sizeof(IMAGE_IMPORT_DESCRIPTOR)。将以上各值填入原IID位置,填写的时候需要注意字节序是小端序,填写结果如下。

2023-03-14 21:22:23 690

原创 ida使用技巧:ida python

一、简介ida python是ida中一个很强大的功能,早期需要另行下载,后来在6.8版本成为了内置插件,而在7.5版本更新后又对函数的命名进行了规范修整。ida python官方提供了函数文档:https://www.hex-rays.com/wp-content/static/products/ida/support/idapython_docs/IDC api函数文档:https://www.hex-rays.com/products/ida/support/idadoc/162.shtml二

2023-03-14 21:12:13 3422 1

原创 ida使用技巧之动态调试

一、ida动态调试1、介绍众所周知,ida是一款非常优秀的反编译软件,在静态逆向中是属于屠龙宝刀一般的存在,他不仅仅有着优秀的静态分析能力,同时还有着极其优秀的动态调试能力,甚至可以直接对生成的伪代码进行调试,这一点远超其他只能在汇编层进行调试的动态调试器,极大的增加了动态调试程序的可读性,能够节省很多精力。甚至可以以远程调试的方式,将程序部署在linux或安卓端上,实现elf文件和so文件等的动态调试。2、本地调试(Windows)首先从本地动态调试开始加载目标文件万年第一步,使用ida打开目

2022-05-20 10:09:48 24740 3

原创 经典病毒:熊猫烧香函数全分析

熊猫烧香病毒分析

2022-04-17 16:54:31 747

原创 Python练习

Python实现四舍五入今天在CodinGame上碰到了一个要求将浮点数结果四舍五入转为整数的题,写的有些麻烦,现在发现了优化方法,记录一下Python自带的强制转换和其他语言的并没有什么不同,都是直接舍去小数点后面的数,但四舍五入要求小于0.5的舍去大于等于0.5的进一位。所以单纯的使用int牵制转换不可行思考后会发现,根据强制转换的特性,如果给被转换的数加上0.5,再进行强制转换,得到的结果刚好符合四舍五入的性质,不过需要注意一下负数是减去0.5所以四舍五入函数就可以写成def fun(a

2021-07-17 12:10:18 84

原创 Python练习

继续洛谷刷题并不难,直接上代码n = int(input())ans = 0a = [0 for i in range(n)]t = [0 for i in range(20005)]g = [0 for i in range(20005)]q = 0for i in input().split(): a[q] = int(i) g[a[q]] += 1 q+=1for i in range(n): for j in range(i+1,n):

2021-06-10 20:45:05 139 2

原创 Python练习

Codingame 上打代码冲突上题Paint is a magical tool and birthplace to amazing early 2000s’ artists. One functionality, in particular has revolutionized the way to make art: “Fill the color”. This feature allows to change the color of a pixel and all neighboring pi

2021-06-09 20:15:10 139 2

原创 Python练习

每日练习洛谷p5461读完题之后感觉模拟做很麻烦,观察输出数据,发现这是一个二进制形式的杨辉三角,于是一切就变的简单了起来直接上代码n = int(input())n = pow(2,n)a = [[0]*(n+1) for i in range(n+1)]a[1][n-1] = 1for i in range(2,n+1): for j in range(n): a[i][j] = a[i-1][j] + a[i-1][j+1] a[i][j]%=

2021-06-07 21:07:19 109 1

原创 Python练习 --学习笔记

Beautiful Soup库使用Beautiful Soup库是一个可以解析HTML和xlm文件的库,可以在使用requests库获取html格式文件后对其进行处理一、Beautiful Soup库的基本元素(1)tag标签,最基本的信息单元,与HTML中的标签意义相同使用 .tag的形式获得一个标签(2)name标签的名字, tag .name 形式调用,以字符串格式返回一个标签的名称(3)attributes标签的属性,以字典格式返回这个标签的属性值tag .attrs 格

2021-06-06 18:18:41 102

原创 Python练习 --学习笔记

菜鸡学习笔记 — request库基本使用本学习笔记总结自慕课北京理工大学嵩天老师的课程,感谢老师提供的优质课程课程链接request库基于urllib,是Python中一个重要的http库。一、requests库的主要方法(1) get()方法:对应HTTP中的GET基本语法 :r = requests.get(url,paramas,kwargs)#url为访问页面的url链接,为必选#params是url的额外参数,可以为字典或字节流格式,可缺省#kwargs是访问控制参数,有1

2021-06-05 00:07:26 101 1

原创 Python练习

今天在codingame打了几个小练习第一题没有截图,题干意思是给定一个数n,顺序输出0到n所有数字的二进制格式,并右对齐下面是我扣了半天的代码def change(a): s = "" if a == 0: return "0" while a!=0: s+=str(a%2) a = int(a/2) return s[::-1]def main(): n = int(input()) l = len

2021-06-03 19:38:38 87

原创 前缀和算法

前缀和1、一维前缀和前缀和其实就是数列求和公式基本思路:a[1]+a[2]+…+a[n]=s[n]求出s[i]后利用s[i]求a[r]+a[r+1]+…+a[l]=s[l]-s[r-1]例题:输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询

2021-06-02 21:08:02 350

原创 Python练习

子矩阵的和打卡第二天,题目如下这是个典型的求二维前缀和问题。因为练习重点是Python的熟练度,就不在这里介绍前缀和算法了,有兴趣的可以看我的另一篇博文因为之前一直使用c++的缘故,改用Python后对他的数据读入非常不熟悉,花了大量的时间解决数据读入问题。Python提供的input函数的读入是字符串类型,但显然题目需要的是整型,并且输入的每行还由多个数据组成,这就不能使用强制转换简单的解决问题了。最先产生的思路是使用split方法,将读取的字符串按空格分割形成列表,再将列表的值依次赋值给对

2021-06-02 20:37:00 60

原创 Python练习

Python每日练习第一次写博客,先搞个简单的试试手,在洛谷上找了个入门题很简单没啥好说的,定义二维数组,初始化第一行第一列元素值为1,然后让接下来的每一个元素都等于他上一行对应位置元素与上一行对应位置的前一个元素之和即可直接上代码n = int(input())n += 1list1 = [[0]*n for i in range(n)]list1[1][1] = 1for i in range(2,n): for j in range(n): list1[

2021-06-01 11:37:45 77

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除