
笔记
文章平均质量分 56
I Am Rex
24届毕业生,it工程师
展开
-
Redis入门到实战笔记-Java客户端
客户端笔记原创 2023-06-04 15:22:57 · 640 阅读 · 0 评论 -
分布式文件存储HDFS学习(一)
大数据基础课程类总结原创 2022-09-23 17:00:52 · 1469 阅读 · 0 评论 -
如何Reverces(干扰分析技术及破解技术)
常见的干扰逆向分析的技术有花指令,反调试,加壳,控制流混淆,双进程保护,虚拟机保护等技术,下面会简单介绍这几种技术并介绍破解的基本思路。10.3.1花指令花指令是代码保护中的一种比较简单的技巧。其原理在原始的代码中插入一段无用的或者能够干扰反汇编引擎的代码,这段代码本省没有任何功能性作用,只是一种扰乱代码分析的手段。1.基本思路花指令主要是影响静态分析,在IDA中表现为一些指令无法识别,导致某些函数未能识别,从而无法对这些函数进行反汇编。在IDA中手动将花指令patch成nop空指令,可以去除花指令原创 2022-01-12 09:02:34 · 490 阅读 · 0 评论 -
01.10 pytorch学习(神经网络-搭建小实战和Sequential的使用)
神经网络-搭建小实战和Sequential的使用要实现的网络结构:代码:import torchimport torch.nn as nnimport torchvisionfrom torch.utils.data import DataLoaderfrom torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequentialdataset = torchvision.datasets.CIFAR10("./dataset2"原创 2022-01-10 21:08:10 · 328 阅读 · 0 评论 -
01.08 pytorch学习(神经网络-非线性激活)
非线性激活函数如果有过深度学习的基础就很好理解了下面只介绍如何使用,和样例演示import torchimport torchvision.datasetsfrom torch import nnfrom torch.nn import ReLUfrom torch.utils.data import DataLoaderfrom torch.utils.tensorboard import >SummaryWriterx = torch.tensor([[-1,2],原创 2022-01-08 23:39:15 · 557 阅读 · 0 评论 -
java 遍历arrayList的四种方法
package com.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ArrayListDemo {public static void main(String args[]){List list = new ArrayList();list.add(“luojiahui”);list.add(“luojiafeng”); //方法1 Itera原创 2021-12-02 16:07:36 · 927 阅读 · 0 评论 -
java常用的字符串,字符操作(16进制转换,大小转换,数据类型转换)
将java10进制数字转换为16进制String hex= Integer.toHexString(numb);将java 16进制字符转换为10进制数BigInteger bigint=new BigInteger(hexs, 16); int numb=bigint.intValue();例题:import java.util.Scanner;public class Main{ public static void main(String args[]){..原创 2021-11-29 10:38:59 · 773 阅读 · 0 评论 -
排序小结(转)
刚刚学习了排序这一章,看到了书中最后的一个总结表: 心想从表上来看,堆排序不该是最好的排序算法么?不管最好、最坏还是平均情况,时间复杂度都是O(nlogn),而且还不像快排和归并排序那样占空间,为什么说快速排序是最好的算法呢? 其实经过实验,会发现相同的数据规模,快速排序比堆排序的效率高很多,并且随着数据规模的扩大,二者的差距不断扩大,快速排序的优势越来越明显。快速排序的时间复杂度近似线性...原创 2021-11-28 16:48:17 · 78 阅读 · 0 评论 -
Mysql 局部变量、全局变量、用户变量的区别表
操作类型全局变量会话变量用户变量局部变量(参数)文档常用名global variablessession variablesuser-defined variableslocal variables出现的位置命令行、函数、存储过程命令行、函数、存储过程命令行、函数、存储过程函数、存储过程定义的方式只能查看修改,不能定义只能查看修改,不能定义直接使用,@var形式declare count int(4);有效生命周期服务器重启时恢复默认值断开连接时,变量消失断开连接时,变量消失出了函数或存储过程的作用域,变量原创 2021-11-19 12:47:54 · 872 阅读 · 0 评论 -
二叉树实验(两种链式存储与各种遍历)
采用c++//测试用例:AB##CD##EF##G###include<stdio.h>#include<stack>#include <vector>#include <queue>using namespace std; typedef struct Node { char data; struct Node* lchild; struct Node* rchild;}TreeNode, *Tree;void creatTre原创 2021-11-14 17:17:55 · 868 阅读 · 1 评论 -
Python爬虫学习(二:HTML基础1)
你将理解一个HTML网页的完整结构,并了解如何让搜索引擎更好的找到你的网页。目录声明文档格式:DOCTYPE(doc type 方法标准)根元素:HTML 元素头元素:head 元素网页标题元素:title元信息元素:meta编码格式:charset描述:description关键词:keywords主体元素:body 元素href 属性锚 URL 实例:创建网页内导航相对 URL 实例:跳转到同一网站的另一个网页发送电子邮件target 属性:在何处打开链接分级标题段落与换行列表有序列表实例无序列表实例原创 2021-10-10 17:29:25 · 321 阅读 · 1 评论 -
java第一次作业(二,三章)
这里写自定义目录标题第1次作业(2、3章)6-1 冒泡算法 (10 分)7-1 计算π的值 (10 分)7-2 求圆柱的面积和体积 (10 分)7-3 判断奇偶 (10 分)7-4 华氏度转摄氏度 (5 分)7-5 华氏度转摄氏度(四舍五入) (5 分)7-6 中国生肖年 (5 分)7-7 打印乘法表 (5 分)第1次作业(2、3章)6-1 冒泡算法 (10 分)冒泡排序是最简单的排序之一,通过与相邻元素的比较和交换来把小的数交换到最前面。请完成实现swap方法,来完成冒泡算法。函数接口定义:请参原创 2021-09-14 11:10:18 · 183 阅读 · 0 评论 -
新手如何Reverces(3自动化逆向篇)
自动化逆向在前面的介绍中,大多数逆向都是通过手工逐步进行分析,但是出于效率的考虑,我们更希望使用脚本来对一些重复的工作进行自动化处理。在逆向工程领域,有较多使用python开发的工具,这些工具大多数支持分析人员编写相应的脚本来完成一些自动化的处理工作。这里介绍几个常用的工具目录自动化逆向1.IDAPython1.IDAPython通过IDAPython插件,分析人员能够以Python脚本的形式访问IDC脚本引擎的核心,完整的IDA插件API,以及所有与Python捆绑在一起的常见的模块。目前,默认原创 2021-09-09 10:08:52 · 4483 阅读 · 1 评论 -
新手如何Reverces(基础ctf教程篇2:如何求解flag)
如何求解fla文章目录如何求解fla1,直接内存获取2.对算法进行逆变操作1,直接内存获取对于一些比较简单的题目,可以通过直接查看内存的方式获取flag。对于这种形式,只需要在比的地方下个断点,然后通过查看内存即刻得到flag。 参考例子:远程动态调试2.对算法进行逆变操作如果一个判断过程的代码如下所示,那么要分析convert的算法,然后分析结果写出对应的逆算法,通过reverse_convert(stardard)方式求得flag...原创 2021-09-06 21:07:23 · 1561 阅读 · 0 评论 -
新手如何Reverces(基础ctf教程篇)
新手如何Reverces(基础ctf教程篇)提示:文章依靠C语言,并且需要了解内存机制文章目录新手如何Reverces(基础ctf教程篇)前言一、关键代码定位1.API断点法2.字符串检索法(1)在IDA中查找字符串二、1.引入库2.读入数据总结前言提示:本文章将从常规的逆向分析流程开始,讲解查找代码段,加密算法识别,后续文章等待更新一、关键代码定位提示:下面讲解的是原理,有的没有讲解具体如何实现,但是当方向明确以后,一切不就变得简单了吗。1.API断点法在windows界面程序逆向中原创 2021-09-04 14:16:01 · 883 阅读 · 0 评论 -
buuctf_SimpleRev 1(算法逆向0r爆破0r动态调试)
ida反汇编:unsigned __int64 Decry(){ char v1; // [rsp+Fh] [rbp-51h] int v2; // [rsp+10h] [rbp-50h] int v3; // [rsp+14h] [rbp-4Ch] int i; // [rsp+18h] [rbp-48h] int v5; // [rsp+1Ch] [rbp-44h] char src[8]; // [rsp+20h] [rbp-40h] __int64 v7; // [r原创 2021-08-29 18:48:30 · 835 阅读 · 0 评论 -
elf 变异upx 脱壳
题目是某ctf题首先使用IDA打开:函数极少,有壳。查看函数这个跳转比较可疑下面进行IDA动态调试进入loc_52D516再进入直到找到jmp r13运行到这里,F8跳转直接retn下断点F9,直接retn下断点F9重复,直到遇到一个大跳转单步,然后return来到了程序入口下面dump脱壳(转储的意思)。dump要使用脚本,因为我是个菜鸡,直接在网上找的脚本,通用的。idc脚本下载可以存放在ida里面有个脚本的文件夹idc,源码后面会附上首先在D盘下原创 2021-08-29 09:15:09 · 3800 阅读 · 1 评论 -
readelf文件信息说明
使用命令readelf -h tar文件ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 #7f是elf文件标识,45 4c 46对应elf,后面是文件版本信息,Magic描述的是模数(百科:https://baike.baidu.com/item/%E9%AD%94%E6%95%B0/2464954?fr=aladdin) Class: EL原创 2021-08-25 19:13:36 · 374 阅读 · 0 评论 -
简单逆向31(OD调试,亦或)
使用IDA打开,通过搜索字符串找到主函数:int __thiscall sub_AC2810(void *this){ int v1; // eax int v2; // ecx int v3; // eax char *v4; // esi signed int v5; // edi unsigned int v6; // kr00_4 char *v7; // ecx char **v8; // ecx char *v9; // ecx char *v10;原创 2021-08-23 22:18:26 · 367 阅读 · 0 评论 -
不太简单的简单逆向30(sm4,异性base64,hook)
先运行:惨找个库放进去不报错了但是还是运行不了那就只能静态了:放入IDA:代码很少(假象)sub_411136(后改名为check):很神奇,直接比较了,看下str1,和str2,在str1中交叉引用,因为我们想知道他怎么生成的:能看到它把str2混淆过,后面str1经过了base64加密,但这不是一个正常的base64:_BYTE *__cdecl sub_413090(char *Str){ int k; // [esp+E4h] [ebp-5Ch] int v3原创 2021-08-19 11:46:40 · 928 阅读 · 0 评论 -
简单逆向7(安卓,base64换换表)
jeb打开MainActivity:package com.example.ctf_2019_2;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.EditText;imp原创 2021-08-18 12:06:03 · 467 阅读 · 0 评论 -
Qt GAME_PlanWar(飞机大战)
1,创建窗口:使用QWidget就行了:导入资源文件:方法见头文件申明一个初始化函数新建一个map.cpp,主要用于地图的绘制:设置如下#ifndef MAP_H#define MAP_H#include <QPixmap>class Map{public: Map(); #构造函数,可以初始化 void mapPosition(); #设置地图位置移动public: QPixmap m_map1; #由于QPixmap类使用隐式数原创 2021-08-17 17:55:29 · 391 阅读 · 2 评论 -
简单逆向6(安卓,算法逆向,os)
先了解一个关键字NATIVE 静态链接首先用jeb打开:找到MainActivity(Tab反汇编):package com.sec.ctf2;import android.app.Activity;import android.os.Bundle;import android.view.View$OnClickListener;import android.view.View;import android.widget.Toast;public class MainActivit原创 2021-08-16 18:59:45 · 483 阅读 · 0 评论 -
python矩阵运算
需要使用python的numpy库安装方法:pip/pip2/pip3 install numpy矩阵的创建直接使用mat和列表是最常用的方法其他方法:data1=mat(zeros((3,3)));#创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)data2=mat(ones((2,4)));#创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=intdata3=mat(random.rand(2,2));#这里原创 2021-08-16 10:17:18 · 845 阅读 · 0 评论 -
简单逆向23(dnSpy,.net,动态调试)
根据习惯放入IDA:发现不是c语言之类写的,放入exeinfope看一下是.net,通过百度发现可以使用dnSpy等反编译软件使用dnSpy打开:Module处ctrl + f搜索main:找到主函数// Token: 0x06000030 RID: 48 RVA: 0x00002618 File Offset: 0x00001A18 internal unsafe static int main() { string b = "3ACF8D62AAA0B630C4AF43AF3原创 2021-08-14 11:01:15 · 5922 阅读 · 1 评论 -
python unicorn engine
unicorn简介:Unicorn 是一个轻量级, 多平台, 多架构的 CPU 模拟器框架.我们可以更好地关注 CPU 操作, 忽略机器设备的差异. 想象一下, 我们可以将其应用于这些情景:比如我们单纯只是需要模拟代码的执行而非需要一个真的 CPU 去完成那些操作, 又或者想要更安全地分析恶意代码, 检测病毒特征, 或者想要在逆向过程中验证某些代码的含义. 使用 CPU 模拟器可以很好地帮助我们提供便捷.它的亮点 (这也归功于 Unicorn 是基于 qemu 而开发的) 包括:支持多种架构:原创 2021-08-13 10:08:47 · 681 阅读 · 0 评论 -
简单逆向29(pyc反编译,z3,unpack)
诺莫29pyc文件,先反编译成py文件:方法见简单逆向27# uncompyle6 version 3.7.4# Python bytecode 2.7 (62211)# Decompiled from: Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)]# Embedded file name: E:\CTF\Geek-python\python2\python2.py原创 2021-08-12 09:02:39 · 418 阅读 · 0 评论 -
python: yield
迭代器:比如fun函数里面有yieldg = fun(parameter) #创建容器print(next(g)) #第一次会把yield当作return执行print(next(g)) #第二次会从上一次返回的地方开始,把yield当作return执行print(next(g)) #第三次会从上一次返回的地方开始,把yield当作return执行以下例子来自转载首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通原创 2021-08-11 13:01:21 · 145 阅读 · 0 评论 -
简单逆向27(pyc转换,算法逆向,unpack)
诺莫27pyc文件是中间文件,直接执行pyc文件会更快,但不是必须的:py文件转pyc转pyc文件转py:1.直接使用pip install uncompyle6(目前支持python2.6-3.8)2.添加环境变量:将python目录下的script目录设置为环境变量,一般使用pip都设置了的。也可以直接使用命令:path=%path%;%python_home%/script3.使用:cmd代码:uncompyle6 -o target.py resource.pyc或者:原创 2021-08-10 09:41:38 · 474 阅读 · 1 评论 -
简单逆向26(c++函数修饰名,md5,动态调试,算法逆向)
诺莫26开始:放入IDA,找到字符串:找到main函数:signed __int64 main()//重命名{ signed __int64 v0; // rax __int64 v1; // rax const CHAR *v2; // r11 __int64 v3; // r10 __int64 v4; // r9 const CHAR *v5; // r10 signed __int64 v6; // rcx __int64 v7; // rax sig原创 2021-08-08 22:41:28 · 298 阅读 · 0 评论 -
c++函数修饰名的方法
C++的函数名修饰规则有些复杂,但是信息更充分,通过分析修饰名不仅能够知道函数的调用方式,返回值类型,参数个数甚至参数类型。不管__cdecl,__fastcall还是__stdcall调用方式,函数修饰都是以一个“?”开始,后面紧跟函数的名字,再后面是参数表的开始标识和按照参数类型代号拼出的参数表。对于__stdcall方式,参数表的开始标识是“@@YG”,对于__cdecl方式则是“@@YA”,对于__fastcall方式则是“@@YI”。参数表的拼写代号如下所示:X--void D--cha原创 2021-08-08 21:49:06 · 359 阅读 · 0 评论 -
简单逆向25
诺莫25知识点:亦或,查找开始:放入IDA:通过字符串找到主函数int __cdecl main(int argc, const char **argv, const char **envp){ __m128i *v3; // rsi __m128i *v4; // rdi __int64 v5; // rax int result; // eax unsigned __int64 v7; // rax __int64 v8; // rax __int64 v9;原创 2021-08-07 21:46:16 · 219 阅读 · 0 评论 -
不太简单的简单逆向24(xxtea)
开始知识点:1.xxtea解密2.算法逆向1.IDA打开:__int64 __fastcall sub_1400011A0(__int64 a1, __int64 a2){ unsigned __int64 v2; // rbx signed __int64 v3; // rax __int128 *v4; // rax char *v5; // r11 __int128 *v6; // r14 int v7; // edi BYTE *v8; // rsi BY原创 2021-08-06 17:30:48 · 1986 阅读 · 0 评论 -
DES加密学习
先来无聊的发展史:DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。加密大概思路图:1.将56byte的密钥通过算法得到16个不同的密钥2.把要加密的数据使用原创 2021-08-04 17:11:57 · 273 阅读 · 0 评论 -
简单逆向22
诺莫22原创 2021-08-02 09:24:41 · 227 阅读 · 0 评论 -
简单逆向21
诺莫21知识点:动态调试,亦或,爆破开始:放入IDA:int __cdecl main(int argc, const char **argv, const char **envp){ _DWORD *v4; // [esp+1Ch] [ebp-A0h] int v5; // [esp+20h] [ebp-9Ch] int v6; // [esp+24h] [ebp-98h] int v7; // [esp+28h] [ebp-94h] int v8; // [esp+2Ch原创 2021-07-30 17:34:25 · 155 阅读 · 0 评论 -
简单逆向20(z3使用,算法逆向)
诺莫20知识点:z3使用,算法逆向开始:放入IDA:int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // esi unsigned int v4; // kr00_4 char v5; // bl unsigned int v6; // eax char *v7; // edx char v8; // cl int v9; // eax char原创 2021-07-29 16:53:03 · 591 阅读 · 0 评论 -
jeb的基本使用
转:52pj原创 2021-07-28 20:27:32 · 509 阅读 · 0 评论 -
汇编跳转指令
名称 功能 操作数 操作码 模数 寄存器1 寄存器2或内存 位移量 立即数 符号 方向 芯片型号 16位 32位 JO 溢出跳转 短 $70 无 无 无 无 10 无 无 8086 无 无 JNO 不溢出跳转 短 $71 无 无 无 无 10 无 无 8086 无 无 JB 低于跳转 短 $72 无 无 无 无 10 无 无 8086 无 无 JNB 不低于跳转 短 $73 无 无 无 无 10 无 无 8086 无 无 JE 相等跳转 短 $74 无 无 无 无 10 无 无原创 2021-07-28 19:37:38 · 135 阅读 · 0 评论 -
ptrace使用简介
ptrace 提供了一种机制使得父进程可以观察和控制子进程的执行过程,ptrace 还可以检查和修改子进程的可执行文件在内存中的image及子进程所使用的寄存器中的值。通常来说,主要用于实现对进程插入断点和跟踪子进程的系统调用。用法示例#include <sys/ptrace.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <linux/user转载 2021-07-28 19:36:00 · 932 阅读 · 0 评论