RE入门
学习计划
脱壳
http://bbs.pediy.com/thread-20366.htm
这个看了还是一头雾水…在网上down了一份pdf,叫做脱壳的艺术,正在读(百度随便搜)
反静态 反调试 壳
http://bbs.pediy.com/thread-66575.htm
这个很不错,感觉,讲的,emmmmm,开心
如果反静态 + 反调试 + 壳
, 这个时候不能脱壳的话,岂不是GG了, 如果能脱壳,应该就能把反调试patch掉吧,之后动态调试…
其实壳好多就算是反静态的吧, 脱壳并且dump就能对抗反静态是这个意思吗
花指令
http://blog.csdn.net/yangbostar/article/details/6194159
这个作者有一系列文章, 比如病毒编写
花指令思想:
把垃圾数据填充在不会执行到的地方…如何保证这些地方不被执行
作者提到
- 通过jz + jnz 这样子的来替代jmp
- 利用某些运算(如xor..)间接控制标志位 + 条件跳转
- 利用API函数操作返回特定返回值
在没有找到相关的文章,暂时就这样子
ELF
http://zke1ev3n.me/2015/12/15/ELF%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E8%A7%A3%E6%9E%90/
具体还自己看程序员的自我修养 很重要待办事项
反调试
http://www.freebuf.com/sectool/83509.html
这一篇,赞,棒
开始就讲到
ptrace
反调试,想起来上次HBCTF也有这样子一个题目,要patch掉ptrace
之后讲到如果是
gdb <TARGET>
的时候可以检测父进程名称如果是
attach
方式, 可以检查TracerPid
alarm定时,这个我确实在CTF里遇到…当时不知道怎么办…,定时很短时间,到时间就退出,原问提到可以通过
设置gdb对signal的处理方式
来bypass.
(gdb) i handle SIGALRM // 查看SIGALRM信号处理方式
Signal Stop Print Pass to program Description
SIGALRM No Yes Yes Alarm clock
(gdb) handle SIGALRM nopass // 设置不传递
Signal Stop Print Pass to program Description
SIGALRM No Yes No Alarm clock
参考 http://www.cppblog.com/fwxjj/archive/2011/12/06/161621.html
objdump & readelf
readelf
readelf 主要是看一些相关信息, 报名哟反汇编的功能, 常用的就是-S
readelf -h filename elf头部,主要是好看
readelf -S filename 主要是看某一段(sections)的偏移和权限
readelf -l filename 主要是看某一节(segments)的信息
这个sections
和segments
,emmmmmm~,是传说中的链接视图和执行视图里的概念
通常,在ELF在加载到内存里时候,系统会将权限相同的Sections合并成一个Segments
objdump
我用这个objdump主要用来看汇编代码
objdump -d pwn100 反汇编
如果当时编译的时候用了-g
,这个时候就能更详细的显示反汇编(掺杂源代码)
objdump -S [-l] pwn100
这个时候加上-l
还能把原来行号显示出来
-j .text
可以只反汇编指定的section
另外记得加上这个…-M intel
,默认是AT&T的..看的我
最后一点
-d, --disassemble Display assembler contents of executable sections
-D, --disassemble-all Display assembler contents of all sections
另外,objdump -h
查看ELF的各个段(Sections)的时候,只是把关键的段显示出来了,而忽略了其他辅助的段,要查看所有的段,就要用readelf -S
段(Sections)的名字对于编译器,链接器是有意义的,对于操作系统其实只是段的属性和权限有用