首页
社区
课程
招聘
[旧帖] 关于脱壳入门 0.00雪花
发表于: 2011-10-5 09:50 12121

[旧帖] 关于脱壳入门 0.00雪花

2011-10-5 09:50
12121
好多脱文只是讲步骤。具体原因不怎么讲。如果自己脱新壳的话就不好了。有没有将原理的系统脱壳教程。那些什么天草之类的就不要发了。我汇编还可以。一般的算法也能逆,简单的程序用win32汇编也能写。但是现在面对壳 完全不知道怎么回事了。求个将原理的

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 1579
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你都会算法和汇编,怎么就脱不了壳呢。其实我也很少看到有讲原理的书哦,教程都是讲这个壳怎么脱。原理就是壳就像你穿的衣服啊,它把程序包装好了,让你看不到源代码。多看看,你自然慢慢学会了啊。依我个人的一点拙见,脱壳不都是寻找OEP吗?那么我观点就是脱壳的原理是这样的,你运行一个程序,那么这个壳肯定优先运行起来了。所以你找到程序运行之前的那个入口点啊,找到了,就像你衣服找到了纽扣一样,那么岂不是可以先脱掉壳了啊,这样剩下的不就是无壳的程序吗?
2011-10-5 10:59
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我觉的难度有点大
2011-10-5 13:00
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没有什么事是解决不了的事
2011-10-5 13:02
0
雪    币: 93
活跃值: (41)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
不断上机 不断看教程 不断总结
2011-10-5 17:36
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我们先说一下,一般脱壳所需要的工具

PEID -(查壳工具,根据每种壳的特征码而侦测出壳的种类,目前算是比较流行的查壳工具)
Ollydbg - (一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。强烈推荐!)
LordPE - (一款功能强大的pe文件分析、修改、脱壳软件。配合手动脱壳工具(Ollydbg、ImportREC 等),是学习调试手动脱壳必备的工具!)
ImportREC - (手工重建Import表,脱壳必备!)

二:脱壳必须掌握的一些基本汇编语言

JE/JZ 等于转移.(机器码74 或0F84)
JNE/JNZ 不等于时转移.(机器码75或0F85)
JMP 无条件转移指令(机器码EB)

以下四条,测试无符号整数运算的结果(标志C和Z).
JA/JNBE 不小于或不等于时转移.(意思就是大于则就跳)
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.

以下四条,测试带符号整数运算的结果(标志S,O和Z).
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.

CALL 过程调用(调用子程序/函数)
RETN/RETF 过程返回(被调用子程序/函数的返回)
NOP 空语句
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
MOV A,B (把B的值送给A)
PUSH 把字压入堆栈(压栈)
POP 把字弹出堆栈(出栈)

ADD 加法.
SUB 减法
MUL 无符号乘法
DIV 无符号除法.

AND 与运算.(位运算两个比较数中的二进制数值各位有0则0)
OR 或运算.(位运算两个比较数中的二进制数值各位有1则1)
XOR 异或运算.(位运算两个比较数中的二进制数值各位相同则零)(寄存器与自己作异或运算等于清零动作)
NOT 取反.
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).

还有更多的汇编语句,我会打包给大家的....

三:我们开始动手实践一下,熟悉一下工具的使用

我们用记事本来做试验吧,先加个壳。好了。加完后,我们就用PEID来查一下是什么壳....
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
UPX是一款压缩壳...我们再把他载入OD来调试。载入后,会提示,点否!
01014770 > 60 PUSHAD
01014771 BE 00000101 MOV ESI,NOTEPAD.01010000
01014776 8DBE 0010FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF1000]
0101477C 57 PUSH EDI
0101477D 83CD FF OR EBP,FFFFFFFF
01014780 EB 10 JMP SHORT NOTEPAD.01014792
这里,就是UPX壳的入口,这个壳有很多种脱壳~我们今天就用单步直下脱壳法。毕竟我们只是了解一下工具的用法。。。
单步F8,或者用工具栏的那个箭头向下那个按钮!JMP(无条件跳转),要是跳转实现的话,就会出现条红线。这里。他是向下跳,我们就让他跳吧,如果像这种情况。向上跳的话,我们就用到F4(在跳转的下一行,按下F4,或者,右键-断点-运行到选定位置)如果,跳转没实现,他就出现一条灰色的线,实现就红..只要他往上跳,我们就下断F4。不让他往会跳。一直往下单步,在这里,下完断后,还有个JMP向上跳,我们也一样向下一行下断后,但是。他这里的下一行是一个NOP(无动作)。所以不能在这里F4。我们在NOP的下一行下断点,不好意思。。。手快了。哈~~继续!这里。在CALL这行下断点。OD会挂掉。只能在CALL的下一行下断点,我们试验一下~看吧~~运行了,OD挂了~点什么都没反映了。。。我们返回程序的开始!重新开始单步....注意了,就是这里...在这里下断噢~好。到了这个JMP。但他却没出现红线,是什么原因呢。因为这里他实现了远跳转,所以没出现红线。我们F8。。。好,一般远跳转后,就是OEP,这里也就是传说中的OEP。
不好意思,按错了...继续
接着。就用LordPE这个,把程序DUMP下来~~看操作~完整转存!!但这样子程序还是不能运行。得用到ImportREC这个来修复一下~看操作~这里,因为路径太张了。看不到记事本的路径,你们只知道,这里选择那个记事本的路径就对了....
他的OEP地址0100739D-01000000=739D (01000000是他程序的基址)
点自动搜索IAT,发现某些数据。。点确定,获取输入表。修复捉取文件。OK。。我们去看看能不能运行~可以运行~查一下壳~OK
Microsoft Visual C++ 7.0 Method2

就这样了....有什么问题,在论坛留言,或者加我QQ:85400516,问我或者~~~hmily,大家有什么事情都去问他吧。。哈哈!拜拜!

外:OD调试用到的快捷键
F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。
F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。
F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。
F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。
F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。
CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。
ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。
上面提到的几个快捷键对于一般的调试基本上已够用了。要开始调试只需设置好断点,找到你感兴趣的代码段再按 F8 或 F7 键来一条条分析指令功能就可以了。
2011-10-5 18:15
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
很有同感,
2011-10-5 18:45
0
雪    币: 1
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
脱壳基本上都是依据 ESP定律 内存镜像的方法等等来脱壳的
2011-10-5 19:15
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
6楼,脱壳最基础的知识。
2011-10-5 20:10
0
雪    币: 3
活跃值: (118)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
大哥 这些n年都会了,汇编高手不干啥,但是一般的小软件我win32汇编就可以写。我是想再这基础上怎么提高。我现在除了esp 内存法 其他壳完全不会
2011-10-5 21:51
0
雪    币: 36
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了~
2011-10-5 22:30
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不太清楚a啊
2011-10-5 23:05
0
雪    币: 48
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了!!!!
2011-10-9 12:35
0
雪    币: 3511
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我是新手,学习了
2011-10-9 12:50
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
新手,学习,学习
2011-10-10 20:45
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习学习再学习
2011-10-10 23:54
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
学习学习,呵呵
2011-10-11 08:54
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
6楼强大,跟着学习!
2011-11-5 20:09
0
雪    币: 268
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GUX
19
我也是啥都不会
2011-11-5 21:35
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习了。。我就是菜鸟 也正找这方面的知识看呢
2011-11-7 08:59
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
新手来学习。
2011-11-7 11:15
0
雪    币: 2
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
你不去实践  只知道想原理  怎么会行???
2011-11-7 12:45
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
升级成会员啦啦啦啦啦
2011-11-7 12:56
0
游客
登录 | 注册 方可回帖
返回
//