jmp esp

私信 关注
Anciety
码龄6年
  • 596,055
    被访问量
  • 171
    原创文章
  • 9,469
    作者排名
  • 150
    粉丝数量
  • 于 2015-06-26 加入CSDN
获得成就
  • 获得240次点赞
  • 内容获得77次评论
  • 获得214次收藏
荣誉勋章
TA的专栏
  • Anciety的pwn工具箱
  • CSAPP个人读书笔记
    3篇
  • pwnable.kr writeup
    5篇
  • linux基础
    43篇
  • vim
    4篇
  • algorithm
    1篇
  • python
    17篇
  • android security
    23篇
  • ctf
    50篇
  • android
    21篇
  • java
    16篇
  • 软件工程
    4篇
  • C/C++
    12篇
  • pwn
    37篇
  • 俄语
    1篇
  • linux 内核
    8篇
  • arm assembly
    2篇
  • scala
    3篇
  • reverse
    1篇
  • Rust
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

v8 老版本(4.8)编译大坑记录

前言由于需要研究一下老版本(4.8) v8的一些漏洞,需要编译一个老版本的v8(d8?),但是发现这条路真的大坑无数,所以稍微记一下,由于是凭记忆记的,可能不是很全。。获取代码首先获取代码已经是个大坑。depot_tools正常获取代码的方法是不行的,需要用到google的depot_tools。具体获取方案新老v8差距不大,获取最新的即可。具体可以按照v8 wiki里的方...
原创
1161阅读
1评论
1点赞
发布博客于 3 年前

archlinux 小米笔记本air 13.3 独显版指纹识别 解决方案

问题买了个小米笔记本,发现有个指纹识别(surprise??),虽然说有个libfprint 以及archlinux官方的fprintd可以读取指纹,但是似乎arch官方的libfprint没有支持小米笔记本,但是其实libfprint最新版本已经有了支持,所以需要自己处理一下处理过程大概原理:因为第三方最新libfprint已经有了支持,但是arch所带的fprintd没有支持,...
原创
5665阅读
4评论
2点赞
发布博客于 3 年前

Anciety 0CTF/TCTF 2018 总结

前言这次跟着lotus-r3kapig打0CTF,题目挺好,学到很多东西,无奈最后实在是菜,题目要么被队友秒了,要么完全不知道怎么下手,确实很有总结的必要。Time basedDAY 1第一天比较操蛋是我们除了0ctf还有个nuit du ctf要打,两个时间是重合的,比较尴尬,还好nuit du ctf只有一天,难度也还比较有限,加之队友实在给力(感谢@F0r_1st 和...
原创
1828阅读
2评论
2点赞
发布博客于 3 年前

浅谈面向对象

前言本文仅仅是面向个别同学的,可能存在xjb乱说的情况,如果有欢迎指出,不过我不喜欢谁喷我,谁喷我我就删掉,或者当没看见。 由于我才疏学浅,本文也就是对我所感受到的东西进行一些总结,估计很大概率会乱说,所以觉得有所了解的同学就不用看啦,反正也不会有收获的。面向对象?好了现在我们可以开始瞎掰了。什么是面向对象?我稍微做了一下搜索,发现大多数人还是提到了经典的三个词: 封...
原创
380阅读
0评论
2点赞
发布博客于 3 年前

随便谈谈Rust错误处理

错误处理?其实我一直不能太分清楚什么是错误什么是异常,不过我倒是觉得区分这些个东西意义不大,重要的是认清本质。一个程序在运行过程中总会碰到一些错误,有的是因为用户的不当操作,有的是因为期望的结果没有发生,当然还有直接就是无法恢复的程序bug,无论如何,这些问题,如果我们考虑到了,都是需要一套解决方案的,所以我们就来稍微谈谈这些解决方法,还有我最近学到Rust的解决方法。从Error Cod...
原创
4298阅读
0评论
1点赞
发布博客于 3 年前

archlinux 安装latex使用中文

前言latex的安装其实感觉非常操蛋,不过还好我用的是archlinux..之前没有利用好archlinux自己的东西,导致安装浪费了很多时间还没有成功,后来发现archlinux自己已经做好了很多工作…安装texlivesudo pacman -S texlive-core texlive-langchinese这个时候还会出一个神奇的错误,缺少environ.sty,也就是environ.sty
原创
5291阅读
0评论
5点赞
发布博客于 4 年前

pwnable.tw calc writeup

题目main:int __cdecl main(int argc, const char **argv, const char **envp){ ssignal(14, timeout); alarm(60); puts("=== Welcome to SECPROG calculator ==="); fflush(stdout); calc(); return puts
原创
1255阅读
0评论
0点赞
发布博客于 4 年前

pwnable.tw orw writeup

题目题目比较简单就不复制了,首先seccomp设置了白名单,然后输入0xc8长度shellcode,直接跳到shellcode执行。分析既然是练习,就要彻底一点。 首先是seccomp dump的问题,目前采用的方法是IDApython脚本dump数据下来,然后输入scmp_bpf_disasm。IDApython的文档非常诡异,函数没有说明,函数的参数也不能直接看出来,所以搜了很长时间找了一个别
原创
1383阅读
0评论
1点赞
发布博客于 4 年前

pwnable.tw start writeup

题目.text:08048060.text:08048060 public _start.text:08048060 _start proc near.text:08048060 push esp.text:08048061 push offset _exit.te
原创
1233阅读
1评论
0点赞
发布博客于 4 年前

hitb-2017 1000levels writeup

题目分析题目设置的还是比较巧妙的。本身是一个二进制的文件,linux 64环境,保护情况如下: Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled功能一共三个: 1. go:
原创
1350阅读
0评论
1点赞
发布博客于 4 年前

bosten key party 2017 memo writeup

memo题目https://github.com/ctfs/write-ups-2017/tree/master/boston-key-party-2017/pwn/memo-300分析题目有些生硬,很多地方都不太能说通,不过就是练习一下,就当刷水题了。逻辑setvbuf等基本操作,以及使用prctl设置了no new privs,所以无法新建进程输入用户密码,密码可以不写,全局变量name和p
原创
723阅读
0评论
2点赞
发布博客于 4 年前

bosten key party 2017 signed shell server writeup

signed shell server题目https://github.com/ctfs/write-ups-2017/tree/master/boston-key-party-2017/pwn/signed-shell-server-200分析先随便把玩一下,有两个功能,一个是sign,一个是execute,sign会给出一个命令的签名,然后execute给出命令,并给出签名,如果匹配成功就会使用
原创
460阅读
0评论
0点赞
发布博客于 4 年前

绿盟杯NSCTF(CCTF)2017 pwn writeup

前言比赛有无数值得吐槽的地方,其中最主要的是,题目给了pwn的libc,然而,特么是错的,也就是说虽然给了libc,但是其实还是靠运气/当做没有libc解,顺手记录一下这两个水题。pwn1分析mainint __cdecl main(){ alarm(0x1u); setbuf(stdin, 0); setbuf(stdout, 0); setbuf(stderr, 0); p
原创
5163阅读
0评论
1点赞
发布博客于 4 年前

defcon quals 2016 feedme writeup

题目基本信息一个32位的二进制文件,静态链接 checksec:[*] '/home/vagrant/ctf/practice/defcon-2016/pwn/feedme/feedme' Arch: i386-32-little RELRO: No RELRO Stack: No canary found NX: NX enable
原创
569阅读
0评论
0点赞
发布博客于 4 年前

利用ida pro的flare功能识别静态链接函数签名

前言在逆向分析的过程中,如果一个静态链接文件被去除了函数签名,那么整个文件将会变得极其难以识别,我们很难通过手动去识别各个库函数。好在ida pro提供了利用模式识别方式进行识别的功能,使得我们可以很快速的得到很多函数的签名。FLIRTIDA拥有一个FLIRT技术,全称Fast Library Identification and Recognition Technology,即快速库识别和检测技术
原创
3211阅读
0评论
0点赞
发布博客于 4 年前

Python沙箱?不存在的

http://bobao.360.cn/learning/detail/4059.html
转载
596阅读
0评论
0点赞
发布博客于 4 年前

汇编获取当前执行位置方法总结

call-popglobal _startsection .text_start: call next_ins next_ins: pop rax ; rax holds current pc ret; nasm -felf64 test.S && ld -o test test.o这种方法利用了call的时候会在栈上保存ip值,之后pop就可以使某寄存器获取
原创
2063阅读
0评论
1点赞
发布博客于 4 年前

pwn工具箱之house of spirit

house of spirit基本信息利用种类:堆利用堆利用种类:释放fake chunk利用思路:通过构造fake chunk,然后使得fake chunk被free,在下一次malloc时返回fake chunk利用难点需要能够控制被free的内容,才能构造fake chunk在free fake chunk的时候,libc会检查next size,也就是从当前位置开始算,加上一个c
原创
688阅读
0评论
1点赞
发布博客于 4 年前

pwn工具箱之house of force

house of force基本信息利用类型:堆利用堆利用类型:top chunk相关利用思想:通过修改top chunk大小,使得分配任意大小都是从top chunk里边切出来,这样分配一个大小占满想要写的位置和当前分配位置top chunk的差,下一个分配就可以分配出想要写的位置利用难点需要有办法能够更改到top chunk大小需要能够知道当前位置和要写位置的差值需要能够自由控制将
原创
639阅读
0评论
0点赞
发布博客于 4 年前

pwn工具箱之unsorted bin attack

unsorted bin attack基本信息利用类型:堆利用 堆利用类型:针对unsorted bin的利用,也就是需要用normal chunk或者large chunk释放得到的 利用思想:unsorted bin是一个双链表,在分配时会将unsorted bin中的chunk从unsorted bin中移除,是一个链表的unlink操作。如果能够控制unsorted bin chunk的
原创
2184阅读
0评论
2点赞
发布博客于 4 年前

使用virtualbox和gdb调试内核

前言最近终于打算着手开始学习内核的pwn了,基础知识接触了一些,但是问题最大的是,kernel的运行环境和一般的用户空间程序不一样,调试方法也不一样,所以打算记录一下自己学习如何进行kernel的调试,这才算是进入kernel exploit的第一步。另外,我发现了网上的教程或多或少都存在一些没说清楚的地方,导致不能完整的复现以达到目的,所以决定自己研究一下。光是一个kernel是没办法调试的,还需
原创
1439阅读
0评论
0点赞
发布博客于 4 年前

google ctf 2017 inst_prof writeup

题目题目本身比较神奇,当时看到这道题的时候还懵了一下,一下子没有太好的思路,不过后两天还有考试所以也没太静下心来想,今天刚考完了再来看这道题感觉其实难度并不是很大。题目给出了一个二进制文件,本能的checksec:[*] '/home/vagrant/ctf/contests/googlectf-2017/inst_prof/inst_prof' Arch: amd64-64-lit
原创
874阅读
0评论
0点赞
发布博客于 4 年前

0ctf final world of fastbin writeup

https://github.com/D-I-E/writeups/tree/master/2017-ctfs/20170602-TCTF-Final/pwn-world_of_fastbins
原创
569阅读
0评论
1点赞
发布博客于 4 年前

0ctf final upxof writeup

https://github.com/D-I-E/writeups/tree/master/2017-ctfs/20170602-TCTF-Final/pwn-upxof
原创
646阅读
0评论
0点赞
发布博客于 4 年前

linux wine运行windows ida

前言由于ctf比赛需要,必须得使用ida,然而我本机一直运行的都是manjaro linux。我基本上是使用linux代替windows的,如果缺少这么一个功能,自然代替就无从谈起了。之前一直使用的都是虚拟机,然而最新的manjaro linux更新之后,virtualbox的guest addition应该是和xorg-server存在一些不可告人的错误,只要安装了guest addition就会
原创
3810阅读
0评论
1点赞
发布博客于 4 年前

arch linux youcompleteme libtinfo.so.5 no such file or directory 解决

问题描述arch linux中youcompleteme不工作,查看debug info之后发现libtinfo.so.5出现no such file or directory.问题解决安装libtinfo已经解决不了了,aur中的libtinfo是libtinfo.so.6,所以解决方法是在youcompleteme的install.py中添加参数--system-libclang,当然首先应该确
原创
1367阅读
0评论
1点赞
发布博客于 4 年前

2017 rctf RNote2 writeup

QIRA我们在写一些exploit的时候,经常会碰见出现的内存不如预期的情况,这个时候我们就会使用调试器查看到底是什么地方出了问题。这个出错的地方肯定是比现在你查看内存的地方要晚了,也就是说,我们得,倒回去看内存,这在一般的调试器中是实现不了的。qira就是这么一个调试器,它可以做到记录下整个过程,使得调试的过程变得更加简单。总的来说,qira的作用: 1. 进行正常调试 2. 调试时如果发现内
原创
1124阅读
0评论
1点赞
发布博客于 4 年前

超越时空的调试器-qira

QIRA我们在写一些exploit的时候,经常会碰见出现的内存不如预期的情况,这个时候我们就会使用调试器查看到底是什么地方出了问题。这个出错的地方肯定是比现在你查看内存的地方要晚了,也就是说,我们得,倒回去看内存,这在一般的调试器中是实现不了的。qira就是这么一个调试器,它可以做到记录下整个过程,使得调试的过程变得更加简单。总的来说,qira的作用: 1. 进行正常调试 2. 调试时如果发现内
原创
1805阅读
0评论
1点赞
发布博客于 4 年前

MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") TypeError解决方法

问题描述安装qira的时候出现了这个错误,大概如下Processing ./qiradbCollecting https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709 (from -r requirements.txt (line 1
原创
793阅读
0评论
0点赞
发布博客于 4 年前

hitcon 2016 pwn babyheap writeup

NoticeFor English information, just get a closer look at my exp.py.题目Heap so fun! Baby, don’t do it first. nc 52.68.77.85 8731 note : the service is running on ubuntu 16.04地址:https://github.com/ctfs/w
原创
777阅读
0评论
0点赞
发布博客于 4 年前

elf增加一个可执行段以注入代码的一些思考

注入代码需要什么向elf中注入代码为patch带来了极高的灵活性,使得对函数进行hook从而达到更改参数,在线更改值以及监视函数执行等一系列 行为提供了可能。可是向segment中注入代码并不如想象的那么简单,有一些东西需要注意才能够真正达到效果。elf可执行文件执行的关键其实是segment,在执行的过程中section相对并不重要,即使section有一些损坏,只要segment,包括 pr
原创
2423阅读
5评论
0点赞
发布博客于 4 年前

manjaro linux 安装搜狗拼音输入法

安装fcitxsudo pacman -S fcitx安装搜狗输入法yaourt sogou可以搜到一个搜狗输入法,安装fcitx之后可以安装这个输入法配置在~/.xprofile中添加export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxexport XMODIFIERS=@im=fcitx如果还是无法使用,可能需要安装fcitx-gtk2sud
原创
20208阅读
0评论
0点赞
发布博客于 4 年前

pwn工具箱之house of lore

前言我看了一些网上对于这些技术的解释,但是发现他们大多比较绕,对于理解其中心思想造成了难度,所以 我在这里把他们记录下来,把这些技术的中心思想记下来,作为自己的pwn工具箱,在以后解决pwn问题的 时候能够随时拿出来发挥作用。我在这里关注的目标是其利用的思想,和其他的一些post不同,利用条件等等这些我个人认为不是能够直 接被总结的,pwn本身的方法多种多样,十分灵活,如果用一些“第一个chu
原创
1110阅读
0评论
1点赞
发布博客于 4 年前

pwn工具箱之fastbin attack

fastbin attack基本信息利用类型: 堆利用堆利用类型: 针对fastbin的利用利用思想: 利用fastbin的free只检查是否和上一个freechunk相等,使得同一个chunk两次进入free list,造成UAF,可以更改fastbin free chunk的fd信息,最终分配一个特定地址利用难点需要能够两次free同一个chunk更改fd的时候,为了能够在之后的ma
原创
1964阅读
0评论
0点赞
发布博客于 4 年前

2017 bctf boj writeup

BCTF 2017 BOJThis is a very interesting challenge for me. We were given a working oj on http://oj.bctf.xctf.org.cn, there was only a single classical problem a + b on it. I tried several times to play
原创
789阅读
0评论
0点赞
发布博客于 4 年前

python decorator记录

装饰器decorator装饰器,在设计模式中有一种模式叫做装饰器模式,虽说不完全是设计模式中的那个, 但是其思路是一致的。目的都是需要添加功能,但是又不希望更改原来的代码。比如我已经有一个函数do_something(),然后我希望添加一些功能,但是又不应该 直接去更改这个函数的代码,我们就可以通过装饰器的方式,在前后进行添加,并且 将这个函数包裹起来。由于python的函数式特性,我们可以很
原创
292阅读
0评论
0点赞
发布博客于 4 年前

64位arch linux keypatch 安装

idaKeypatch是ida的一个插件,安装需要ida,linux版本的ida在吾爱上有一个6.4版本的,当然最好是正版。IDA的安装与这个post关系不大,这里我就不再详细说了。keystonekeypatch依赖于keystone。下面的内容包括本机的keystone和ida的keystone,由于64位linux下ida用的python 不是本机的python,所以方法不一样。如果只用ke
原创
1222阅读
0评论
0点赞
发布博客于 4 年前

manjaro linux(archlinux)alsa没有声音解决方法

问题描述新安装的manjaro linux,基于arch linux,所以可能arch linux也适用。 主要是发现右下声音虽然可以调整,但是没有声音。 speaker-test确实是没有声音出现。alsamixer选择声卡之后是可以调整音量的。 speaker-test出现speaker-test 1.1.3Playback device is defaultStream paramet
原创
9056阅读
1评论
1点赞
发布博客于 4 年前

ctf pwn 个人经验记录

前言记录一下自己在做pwn的过程当中学到的一些东西,以前不知道的东西等等,碰到的坑也会记录在 这里,主要目的是帮助自己记录一下经验。其实每一道题基本上能学到的新东西是有限的,记录下来避免什么时候想不起来。顺序比较乱,基本上根据我做题的顺序定的,比较随意。pwnother place(not from ctf)多用gdb调试,有思路可以先写出来调试一下看看效果再说遇见pie考虑写malloc_h
原创
8185阅读
1评论
5点赞
发布博客于 4 年前

2017 429 ichunqiu ctf smallest(pwn300) writeup

Challenge - smallest (pwn 300) - 429 ichunqiu ctf 2017吐槽这次这道smallest确实很有创造力,算是这次比赛我感觉比较好的地方了。这次比赛本身槽点是无数的,10点开始的比赛,11点都进不去平台,紧急修复到12点,然后12点半在网站通知比赛时间到1点,中途一直不肯决定 比赛到底推迟到几点进行,一早上的课都不敢好好上,确实是非常的坑。然后在做这道
原创
1856阅读
0评论
1点赞
发布博客于 4 年前

file struct 利用总结——百度杯总决赛线上赛try to pwn write up

简介file stream overflow是pwn的一种常用方法(至少最近几次比赛变得有点常用了),主要是通过利用libc的FILE结构体中的一些特点达到控制流劫持的效果。一般来说劫持控制流的方式主要是: 1. 更改栈上返回地址,这种方法在堆相关的利用和格式化字符串利用时需要知道栈地址,或者有栈溢出等方法,才能够更改到栈地址 2. 更改got表地址,这种方法在开启了full relro的时候就
原创
1970阅读
0评论
2点赞
发布博客于 4 年前

pwnable.kr brainfuck writeup

题目I made a simple brain-fuck language emulation program written in C. The [ ] commands are not implemented yet. However the rest functionality seems working fine. Find a bug and exploit it to get a
原创
1488阅读
0评论
0点赞
发布博客于 4 年前

0ctf 2017 babyheap writeup

前言坑比的我比赛的时候没有做。。第二天有课,赛后看了看,题目其实没啥太多难度,可能也就是细节上需要注意一下吧题目题目功能简单介绍一下题目功能,因为我本机是用的linux,ida在虚拟机里,ida的复制又不是特别方便,所以我就不复制分析的情况了,具体分析自己做一下练习一下也比较好,就把大致的情况说明一下。首先是主菜单===== Baby Heap in 2017 =====1. Allocate2
原创
5025阅读
10评论
3点赞
发布博客于 4 年前

堆相关漏洞利用libc异常提示原因记录

Memory Corruption (fast)原因size为fast bin范围。fastbin取出的chunk的size不属于该fastbinsmallbin double linked list corrupted原因size 为smallbin 范围。smallbin的最后一个被取出的时候发现不为double linked list。如拿出的那一...
原创
4090阅读
1评论
2点赞
发布博客于 4 年前

arch linux 使用postgres initdb 出现permission denied解决

直接搬一下整套方案:sudo mkdir /var/lib/postgres sudo chmod 775 /var/lib/postgres sudo chown postgres /var/lib/postgres sudo -i -u postgres [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/po
转载
1648阅读
0评论
0点赞
发布博客于 4 年前

0ctf-2016 pwn-warmup writeup

题目一个bin,知道的信息是flag 的路径https://github.com/ctfs/write-ups-2016/tree/master/0ctf-2016/exploit/warumup-2分析[anciety@anciety-pc warmup]$ file warmupwarmup: ELF 32-bit LSB executable, Intel 80386, version
原创
2315阅读
0评论
1点赞
发布博客于 4 年前

linux 堆溢出学习之malloc堆管理机制原理详解

前言在pwn的学习过程中,最为难啃的骨头莫过于堆相关的利用,然而无论是在实际情况下还是在ctf比赛中,堆利用都是绝对的主流,是漏洞的主要类型之一。鉴于国内相关资料有限,系统讲解堆溢出利用的更是少之又少,我在此整理相关内容,既能作为自己学习的记录,也希望能够给大家带来一定的作用,不过鉴于本人也在学习之中,如有错误希望大家包涵,并且能够积极指正。堆的基础知识什么是堆堆是一种全局的数据结构,用以动态管理系
原创
10327阅读
2评论
13点赞
发布博客于 4 年前

linux 堆溢出学习之house of spirit(2)

开篇本篇接上篇的house of spirit技术的学习,上篇我们翻译了这个技术来源的文章,这篇我们将通过实例和总结来进行一个更深入的了解house of spirit 简介攻击方式:结合栈溢出和堆溢出攻击效果:返回任意位置作为一个chunk攻击要求:可溢出控制某个malloc返回的地址被控制的地址被free再次malloc一个chunk可对第二次分配的chunk进行输入house o
原创
750阅读
0评论
1点赞
发布博客于 4 年前

linux 堆溢出学习之house of spirit(1) malloc maleficarum hos翻译

综述house of spirit是一种常用的堆溢出技术,而在如今的malloc实现中依然没有对这种方法进行保护,所以在目前还是一种有效的堆溢出技术。下面我们先从这种方法的来源之本讲起,即2005 Malloc Maleficarumcsdn原文 The House of SpiritThe House of Spirit is primarily interesting because of th
原创
1447阅读
0评论
0点赞
发布博客于 4 年前

scala implicit 关键字用法总结

综述implicit 关键字是scala中一个比较有特点的关键字,他保证了scala在很多时候没有一些不必要的代码冗余,使得scala在很多时候看起来更加简洁,同时使得scala的一些库在设计的时候,可以有更加直观的操作方法implicit function 隐式函数形式第一种implicit的用法,是将其加在function定义的前面,形式为:implicit def int2String(som
原创
3706阅读
1评论
3点赞
发布博客于 4 年前

ida postive-value sp导致不能使用hexray f5转c语言的解决办法

问题原因在ida中,f5中很重要的一个步骤就是分析sp的偏移值(相对偏移),以此决定栈帧的大小内容等具体情况,所以会设计到分析sp,如果sp出现positive-value 不能使用hexray f5,基本就是分析失败了,比如有一些函数的具体情况比较特殊,比如使用动态跳转代替了静态的跳转,导致分析上有一些错误。 所以我们需要进行手动修正问题解决打开options -> generals 中的分析sp
原创
756阅读
0评论
0点赞
发布博客于 4 年前

scala 中方法和函数的区别

定义函数类型:形式为(T1,…, Tn) => U,其实是FunctionN trait的简写形式,匿名函数和方法值具有这种类型(其实可以作为方法类型的一部分) 方法类型:一个非值类型(non-value type),里边是没有值的,一个方法值具有函数类型,用def定义。具体区别1.方法不能作为单独的存在,除非参数为空,函数可以def m(x: Int) = 2 * x这是一个方法,因为不能单独存
原创
6145阅读
0评论
0点赞
发布博客于 4 年前

scala def/val/lazy val区别以及call-by-name和call-by-value

结论defdef类似于每一次重新赋值,如果是用def定义函数,则是每一次重新获得一个函数val获得一次,并立即执行(严格执行)lazy val惰性执行,也就是赋值(绑定)的时候先不会执行,等到需要的时候再执行实验scala> def f = {println("hello"); 1.0}f: Doublescala> fhellores3: Double = 1.0scala> fhello
原创
3583阅读
0评论
2点赞
发布博客于 4 年前

9447 CTF 2015: Search Engine分析(未完待续)

题目https://github.com/ctfs/write-ups-2015/tree/master/9447-ctf-2015/exploitation/search-engine基本功能1: Search with a word2: Index a sentence3: Quit其中2用来添加一个句子,句子里的以空格隔开作为每一个单词,1输入单词,然后可以删除单词。功能实现具体代码我就不
原创
888阅读
0评论
0点赞
发布博客于 4 年前

youcompleteme unavailable: no module named "future"解决

问题描述我用aur安装了youcompleteme,然后vim出现:youcompleteme unavailable: no module named future问题原因默认的python是py3,py3没有future,所以安装上future就好了问题解决sudo pip3 install future
原创
14333阅读
2评论
1点赞
发布博客于 4 年前

anaconda 使用matplotlib画图出现 could not find or load Qt platform plugin "" 解决

问题描述在使用ipython import pylab的时候(其实主要是import matplotlib.pyplot)的时候出现问题,提示为:This application failed to start because it could not find or load the Qt platform plugin "".之后abort问题原因我猜是qt不兼容还是什么玩意儿,反正就是得用an
原创
7401阅读
4评论
1点赞
发布博客于 4 年前

pep8 要求归纳

前言对pep8 的要求做一个简要的汇总,不保证包括所有内容,主要包括一些代码风格的要求,取其重点进行汇总。如果有时间将会尽力进行全部的翻译。代码布局缩进使用4个空格作为一个缩进层次当需要换行时,续行应该和所包含的元素垂直对齐或者使用悬垂缩进,也就是第一行不应该有任何参数,续行也应该有缩进来明确其作为一个续航。 例如:# 对齐foo = long_function_name(var_one,
原创
9269阅读
0评论
6点赞
发布博客于 4 年前

linux 0.11 version 启动代码分析(bootsect.s)

综述启动代码位于/boot/,包含三个文件,均为汇编编写/boot/bootsect.s启动扇区的代码,位于启动扇区,即磁盘的0磁道,0磁头,第一扇区,bios运行之后会跳转到0x7c00处执行代码,这一段的代码则是将位于0x7c00处等待执行的代码。!! SYS_SIZE is the number of clicks (16 bytes) to be loaded.! 0x3000 is 0
原创
427阅读
0评论
0点赞
发布博客于 5 年前

转载2005 Malloc Maleficarum(待翻译)

Date: Tue, 11 Oct 2005 10:14:02 -0700From: Phantasmal Phantasmagoria <phantasmal@hush.ai>To: bugtraq@securityfocus.comSubject: The Malloc Maleficarum-----BEGIN PGP SIGNED MESSAGE-----Hash: SHA1[---
转载
462阅读
0评论
0点赞
发布博客于 5 年前

linux 栈溢出学习之return_to_dl-resolve

符号动态解析原理符号解析一个可执行文件可能会包含外部符号,可以简单的理解为包含“库函数”。这些函数(符号),在运行的时候必须得知道他们的地址,一个可执行文件在装载的时候,即使其本身装载的位置是固定的,其“库函数”所在的文件的装载位置是不定的,但是又必须知道其精确地址才可以进行运行。所以,符号解析,即将外部符号的具体地址找到,包含两种方法:静态解析:在编译之后的链接过程中,将外部符号所在的共享库的整
原创
1093阅读
0评论
0点赞
发布博客于 5 年前

linux堆溢出学习之unsafe unlink

示例代码来源:https://github.com/Escapingbug/how2heap/blob/master/unsafe_unlink.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>uint64_t *chunk0_ptr;int main(){ printf("We
原创
2949阅读
6评论
2点赞
发布博客于 5 年前

CTF练习 TU-ctf-2016 pwn woO-50

题目简介大致是可以选择好几个动物,然后可以删除动物题目分析有了上一道题的经验,上来先afl[0x004007f0]> afl0x004006d8 3 26 sym._init0x00400710 2 16 -> 32 sym.imp.free0x00400720 2 16 -> 48 sym.imp.puts0x00400730 2
原创
942阅读
0评论
0点赞
发布博客于 5 年前

CTF练习-TU-CTF-2016 pwn BBYS-first-elf-25 记录

题目简介太水了没啥好简介的,radare2打开(我用的linux,闲win虚拟机太麻烦一般懒得用ida)[0x080485c9]> iIhavecode truepic falsecanary falsenx truecrypto falseva trueintrp /lib/ld-linux.so.2bintype elfclas
原创
856阅读
0评论
0点赞
发布博客于 5 年前

i3 dmenu 更改后台打开还是终端打开

~/.config/dmenu-recent/在该文件夹中有terminal和background,保存了对应模式下打开的软件的名字,进去删掉就可以重新选择了
原创
986阅读
1评论
0点赞
发布博客于 5 年前

manjaro urxvt 复制粘贴方法

惊人的发现鼠标中键也可以用作复制粘贴! 而且和系统剪贴板,即ctrl+c ctrl+v不是同一个,他们互不干扰!于是urxvt就用这种方法复制就好了。。。中键粘贴,框选即复制,到其他程序中也可以用鼠标中键粘贴出来
原创
3773阅读
0评论
0点赞
发布博客于 5 年前

linux下fcitx部分窗口无效的问题解决

问题描述linux下部分窗口切换输入法正常,部分窗口切换输入法没有效果,无法输入中文,使用的是fcitx问题原因fcitx未安装好,需要再安装fcitx-gtk2或者fcitx-gtk3问题解决根据不同的发行版本,使用包管理工具安装这两个东西就好了
原创
1723阅读
0评论
0点赞
发布博客于 5 年前

volga-ctf-quals-2016 pwn web_of_scicen_250 writeup

基本情况我并没有参加这个比赛,只是作为练习用,所以无法模拟远程,只能本地调试文件是64位的,运行之后先输入名字,然后每次都会输出这个名字,然后问你10道数学题,后面怎样的其实对这个版本的利用来说不是很重要漏洞情况整个函数比较长,不过我还是复制下来方便解释(来源于radare2, 如果不依赖ida的F5, radare2一些时候比ida还好用,特别是在pwn当中):/ (fcn) sub.puts_7
原创
604阅读
0评论
0点赞
发布博客于 5 年前

某网盘android版过签名验证

简介某网盘整体上没有采用自家的加固,混淆程度还好,会有下划线和字母混淆,可是还不是很完整,关键的一些地方依然没有混淆,采取了本地签名验证的方式来避免重新打包,但是其实并没有什么用,最核心的部分没有混淆到.现象重新打包之后可以运行云盘,但是会跳出对话框,说当前运行在非官方版本下,然后点击确认就退出了分析思路签名更改后会跳出对话框,对话框中有文字,这里就是一个突破点了,在android killer中查
原创
430阅读
0评论
0点赞
发布博客于 5 年前

Android加固与脱壳学习之linux基础和抽取dex

文件系统暴露信息重要的几个文件系统包括: /proc/pid/maps 内存映射 /proc/pid/task 子线程 /proc/pid/mem 进程持有的内存,不可读 /proc/pid/cmdline 启动时相关 /proc/pid/status 进程状态1.可通过ps查看到pid 2.通过cat命令查看到proc文件系统对应的相关信息。 3.如果需要dump信息可以通过dd来达
原创
1296阅读
0评论
0点赞
发布博客于 5 年前

Android加固与脱壳学习之加固初步总结(1)

加固思想类比PE的加壳的加固思想,通过一段引导代码,即通过壳代码来解密,而源dex被加密后存储在一起的做法来进行加壳。加固方案1加固 http://blog.csdn.net/androidsecurity/article/details/8678399 实现 http://blog.csdn.net/androidsecurity/article/details/8809542 这种方案不
原创
651阅读
0评论
1点赞
发布博客于 5 年前

android inline hook 学习笔记

hook种类GOT表hook,通过更改GOT表offset来实现hookinline hook,即内部跳转hook,替换函数开始处的地址为跳转指令,跳转到hook函数比较而言, 1.GOT表对于本so文件中不经过GOT表 2.dlsym来调用的函数不经过GOT表android inline hook难点 - ARM模式和Thumb存在区别,不像x86,需要区分处理. - 跳转指令如
原创
2208阅读
0评论
2点赞
发布博客于 5 年前

libgdx moveTo action setDuration移动越来越快的解决方法

问题最近用libgdx写一个大作业,发现moveto action作用在actor上,actor会越走越快.问题原因网上没有搜到答案,查看了一下源码,发现TemporalAction类里的act是根据deltaTime和duration比较来确定当前移动多少,而我的deltaTime使用的是一直相加的deltaTime,但是因为他的计时是认为从执行action开始,deltaTime应该是为0的,所
原创
501阅读
0评论
0点赞
发布博客于 5 年前

The VirtualBox kernel modules do not match this version of VirtualBox 解决 (linux update,nvidia失败)

问题arch linux 下 upgrade之后发现kernel版本没有变?! sudo pacman -S linux安装失败?!virtualbox 打开告诉我kernel module do not match?!vbox的所有东西都找不到?!CC [M] /tmp/NVIDIA-Linux-x86_64-367.44/kernel/nvidia-drm/nvidia-drm-drv.o/
原创
2905阅读
1评论
0点赞
发布博客于 5 年前

arch linux gcc-multilib等32位兼容lib target not found 解决

问题arch linux gcc-multilib等32位兼容lib target not found (各种lib32-xxx等等)问题原因没有添加pacman的multilib支持问题解决sudo vim /etc/pacman.conf#找到[multilib],把这一行和它下一行的注释去掉sudo pacman -Syyu
原创
3042阅读
0评论
1点赞
发布博客于 5 年前

alarmy 睡你妹闹钟 去广告

前言新刷的rom发现没找到闹钟,下了个alarmy,发现有广告,搞得界面十分不清爽,于是打算自己干掉。方法注入smali比较简单,apktool 变成smali之后发现完全没有混淆,找一下跟广告相关的,根据英文名字,找到com/mopub/mobileads/AdViewController.smali 显然是用来显示广告的controller。 查看smali代码,找到loadAd,显然是
原创
899阅读
0评论
0点赞
发布博客于 5 年前

linux版010editor 破解

花了小半天时间搞了个破解。。思路一开始不太对 浪费太多时间了。 有需要的同学拿去用吧,用法就是你先下官方试用版的010editor,安装之后找到安装的位置,将010editor替换为010editor_cracked即可(记得把名字改回来,不然快捷方式可能用不了)下载地址 提取码mjxz
原创
3345阅读
0评论
0点赞
发布博客于 5 年前

(32位)arm 汇编学习(2)

条件码在指令中,有4位用来表示条件,也就是有16种条件。如果当前条件满足,则继续执行,否则这条指令将被忽略。结果标志主要是被数据操作指令设置和清除,这些指令只有在你强调其应该操作标志位的时候才会影响标志位,比如MOV不会影响标志位,但是MOVS(mov with set)就会设置标志位。接下来我们就要看一些指令条件,是通过在指令后面加上2个字母的后缀来表明的。AL(ALways)这个指令即表示总是,
原创
769阅读
0评论
0点赞
发布博客于 5 年前

(32位)arm 汇编学习(1)

arm基础word大小4字节(32位,这里暂不考虑64位情况)内存arm使用26位内存地址值,也就是最多2^26或者说64m字节。需要注意的是,内存中使用4的倍数的地址,因为取值是基于word的。I/O输入输出设备被映射到内存中,没有独立的IO地址空间的概念。所以在ARM中,内存被分为RAM,ROM,IO设备3个区域寄存器ARM有16个32位寄存器,都可以被不加
原创
913阅读
0评论
2点赞
发布博客于 5 年前

smali语法整理

数据类型smali的语法包括两种数据类型,基本类型和引用类型(这里和java一样),所有对象和数组是引用类型,其他为基本类型。基本类型基本类型由一个字母表示,他们在dex文件中也是通过这样的方式保存的,主要包括 类型 表示 备注 void V 这个类型仅用于返回值 boolean Z 布尔类型,包括true和false两种取值 byte B 字节类型,范
原创
1106阅读
0评论
0点赞
发布博客于 5 年前

android getActionBar返回null

问题使用getActionBar返回null#问题原因 可能是使用了android的兼容包#问题解决 将ActionBar替换为android.support.v7.app.ActionBar
原创
278阅读
0评论
0点赞
发布博客于 5 年前

android inflate之后findViewById返回null的解决方法

问题使用LayoutInflator进行inflate之后使用该layout xml下的id来findViewById出现null poiter exception问题原因setContentView之后使用findViewById是在当前layout之下找,当前layout找不到,于是就null了解决方法将使用inflate返回的view,view.findViewById()
原创
1267阅读
0评论
1点赞
发布博客于 5 年前

C++函数对象学习笔记

函数对象C++似乎越来越希望和C撇清关系,在支持C的各种特性的前提下,又有一些独有的对C的语法实现。函数对象很大程度上和函数指针作用类似,C里有函数指针,相应C++有函数对象,当然,在C++情况下,函数对象肯定略显强大一些。有了函数对象,感觉就算是迈出了函数式编程的第一步了。用法只需要重载()就可以了,一个实例#include <iostream>using namespace std;clas
原创
290阅读
0评论
1点赞
发布博客于 5 年前

arch linux安装-hib文件,hib协议找不到的解决方法

问题yaourt安装带-hib标识的文件时候出错,hib协议找不到问题原因hib协议没有安装问题解决方法yaourt -S hib-dlagent#安装hib-dlagent在HIB官网注册一个帐号,需要邮箱验证然后修改/etc/makepkg.conf,找到DLAGENT,加入一项’hib::/usr/bin/hib-dlagent -p your_password -u your_userna
原创
583阅读
0评论
0点赞
发布博客于 5 年前

bumblebee optirun glxspheres64:X Error of failed request: GLXBadContext错误解决

错误$ optirun glxspheres64Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)libGL error: No matching fbConfigs or visuals foundlibGL error: failed to load driver: swrastVisual ID of window: 0
原创
2956阅读
0评论
1点赞
发布博客于 5 年前

arch linux gtk2-engines-xfce下载

gtk2-engines-xfce下载地址gtk2-engines-xfce.tar.bz2下载
原创
641阅读
0评论
0点赞
发布博客于 5 年前

arch linux 安装出错个人全记录

前记kali感觉日常使用还是不是特别合适,于是又打算换一个系统了。。想了半天没想好用啥,想想我也是比较爱折腾的人,最后决定换archlinux,没想到从一开始安装就折腾的不行。。果然我还是太嫩了,记录下出错的各种地方,方便以后再次安装,也方便有需要的朋友解决问题。我这里省略了很多配置步骤,因为主要目的是安装,之后的配置都等进系统之后再说,所以可能有一些配置不太完整,主要做一个出错之后的参考。准备在w
原创
5389阅读
1评论
0点赞
发布博客于 5 年前

android studio 使用cmake支持C++出现无法sync cmake error的问题

问题错误信息External Native Build IssuesBuild command failed.Error while executing '/root/Android/Sdk/cmake/3.6.3155560/bin/cmake' with arguments {-H/root/AndroidStudioProjects/AccessQRat/app -B/root/Andro
原创
29744阅读
15评论
14点赞
发布博客于 5 年前

android studio导出jar包

简介android studio似乎没有方法可以直接导出jar包,需要自己更改gradle脚本然后导出,而且导出只能使用java library(似乎android library也可以,不过本来jar包就是为了跨平台,所以没有太多必要)方法新建modulefile -> new -> new module 在窗口里边选择java library,然后next,写好名字,finish更改gradl
原创
614阅读
0评论
1点赞
发布博客于 5 年前

java checked和unchecked异常

简介java的异常包括两种,checked和unchecked异常区别checked异常checked异常继承自Exception,必须显式的被捕获和传递,unchecked异常unchecked异常继承自RuntimeException,可以不被捕获和捕获,但其实RuntimeException上一层也是Exception用法很多人对于使用checked和unchecked exception有不
原创
250阅读
0评论
0点赞
发布博客于 5 年前

java BlockingQueue简单介绍

简介BlockingQueue位于java.util.concurrent,用于解决多线程环境下的数据传输问题. 首先,它是一个queue,也就是说,它是一个队列,blocking,即其可以阻塞,也就是说,当出现取数据方无法取数据(如队列空)或者生产数据方无法加入数据(如队列满)时,它可以阻塞. 其本身是一个interface,规定了一个规范,定义为public interface Blocki
原创
316阅读
0评论
0点赞
发布博客于 5 年前

python 将反斜杠u \u字符串转为unicode/utf8

问题描述从sqlite3的中文获取到的字符串是u’\uxxxx\uxxxx’的字符串, 需要将其转换为正常的utf8/unicode字符串才能够使用问题原因我也不知道,反正就是出现了问题解决搜了一下,比较简单的方式是使用jsondef to_chinese(unicode_str): x = json.loads('{"chinese":"%s"}' % unicode_str) r
原创
4882阅读
0评论
1点赞
发布博客于 5 年前

android内核源码编译个人方法和错误记录

下载源码git clone需要翻墙,下下来之后通过branch和checkout获得内核源码找到ndk路径一般gcc交叉编译器位于ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin (版本可能不同) 通过export PATH=$PATH:xxxxxx/ndk/toolchains/….. 将其设置为环境变量,以免
原创
4395阅读
0评论
0点赞
发布博客于 5 年前

linux device drivers 读书笔记(第三章)

scull的design(举了一个具体的scull字符设备的例子)主从设备号字符设备是通过文件系统中的名字进入的, 而在相应目录下使用ls -l可以看到有两个数字,分别是主从号 主号表明设备相应的驱动,而从号表示具体哪个设备被指向.设备号的内部表示dev_t类型定义于MAJOR(dev_t dev);MINOR(dev_t dev);//分别得到主从设备号MKDEV(int major, i
原创
331阅读
0评论
0点赞
发布博客于 5 年前

linux device drivers 读书笔记(第二章)

搭建测试系统(告诉你应该自己搭一个测试系统)hello world模块示例模块#include <linux/init.h>//init所需要#include <linux/module.h>//module都应该包含的,包括一些symbolMODULE_LICENCE("Dual BSD/GPL");//协议要求static int hello_init(void){ printk(
原创
261阅读
0评论
0点赞
发布博客于 5 年前

linux device drivers 读书笔记(第一章)

前言自己记录的读书笔记,按章节和小标题提取需要记忆的内容设备驱动的角色作为一个在软件和硬件之间的连接,将具体一个设备怎样提供功能所抽象,而使外部应用可以专注于一个设备提供了哪些功能.将内核分类进程管理内核需要负责创建和销毁进程和处理它们和外部世界的连接.内核的进程管理实现了多进程的抽象.内存管理计算机内存是主要的资源,对于系统性能来说,其管理方法是至关重要的.内核在有限的内存资源中为所有进程都提供了
原创
583阅读
0评论
0点赞
发布博客于 5 年前

apt-get The method driver /usr/lib/apt/methods/http could not be found错误解决

sudo apt-get install apt-transport-https
原创
13612阅读
0评论
1点赞
发布博客于 5 年前

virtualbox出现failed to attach usb,VERR_PDM_NO_USB_PORTS问题解决

问题叙述在virtualbox上想将U盘加载到虚拟机上,出现failed to attach usb的问题,错误为:Error:VERR_PDM_NO_USB_PORTS 我的机器环境: 宿主机kali linux virtualbox版本5.0.x问题原因usb 设置应使用usb3.0,好像是因为virtualbox不支持其他的问题解决settings进入usb设置,选择usb 3.0但是出现
原创
10526阅读
1评论
1点赞
发布博客于 5 年前

javac 编译多文件

简介javac是终端编译java的主要方法,对于单文件时十分方便. 对于单文件编译,直接javac xxx.java 就可以了,多文件时,特别是同一包下,具有依赖关系的多个java文件时则需要稍微注意一下,因为必须同时编译才可以.用法使用终端匹配多文件,将多个文件名传给javac,同一文件下可以:mkdir outjavac -d ./out ./*.java运行时也需要稍微注意,可能会需要-c
原创
7462阅读
0评论
6点赞
发布博客于 5 年前

linux/mac打开windows文件出现乱码问题解决

原因linux/unix默认文件存储格式为UTF8,而windows中文版默认存储格式为GBK,utf8打开查看windows下的中文文件就会出现乱码解决方案可以使用iconv命令进行编码转换,将gbk格式转换为utf8格式再存储或者直接查看iconv -f gbk -t utf8 xxxxxx(文件名)这里是使用iconv 进行编码转换 -f 表示输入格式 -t 表示输出格式 输出现在会直接输出
原创
5147阅读
0评论
1点赞
发布博客于 5 年前

俄语变格变位表

名词变格表 注: 1. 这四栏都是无尾词的阳性名词。第一栏中“硬辅音”代表最后字母而ц,г,к…ш,щ以外辅音的阳性名词。这四栏的变格词尾是加上去的,与其余各栏词尾随变格改变者不同。 2. 当-ье作为-ие的变体时,第六格才用此形式。 3. ( )内的形式表示也可以那样变,即应变为-ой的,也可以变为-ою。“同一或同二”表示动物名词同第二格,非动物名词同第一格。以下各表亦同。以-ь
转载
18945阅读
0评论
8点赞
发布博客于 5 年前