找回密码
 注册
搜索
热搜: 回贴

LINUX的crackme的逆向小记,LINUX,其他平台

2010-1-30 18:32| 发布者: admin| 查看: 175| 评论: 0|原作者: 云天青


LINUX的crackme的逆向小记,LINUX,其他平台
2008年06月23日 星期一 下午 11:39
一个简单的linux crackme的逆向



前言



最不喜欢的就是写破解教程,酒后一时冲动,老夫卿发少年狂,许下将写一篇linux平台逆向的文章的诺言,作此文实非颇不得已。

在此申明:本文在技术上非常初级,并没有用到什么高深的技术,本人水平亦有限,如有差错,还请见谅!



开始之前的准备



正如C语言教程从 hello world 开始,我们也由一个 crackme 说开去。本文的例子程序你可以到这来下载:

http://www.crackmes.de/users/veneta/crackmes/linux_crackme_v2 。古人云“工欲善其事,必先利其器”,本文中所用到的工具及操作平台罗列如下:

操作平台: gentoo 2004.3 # kernel 2.6.9

逆向工具:

反汇编 -- objdump (这个工具基本上每个LINUX上都有)、lida( http://lida.sourceforge.net/ )

调试器 -- gdb

十六进制编辑器 -- hexedit

文本编辑器 -- vim

压缩工具 -- upx (http://upx.sourceforge.net)

计算器 -- gcalctool(gnome计算器)



开始逆向之旅



首先我们看看程序基本信息:

打开控制台,切换到程序所在目录。运行“ objdump -x cm2 ”,显示如下:





代码:--------------------------------------------------------------------------------

[ncc2008@localhost]$Content$nbsp;objdump -x cm2



cm2: file format elf32-i386

cm2

architecture: i386, flags 0x00000102:

EXEC_P, D_PAGED

start address 0x08048080



程序头:

LOAD off 0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12

filesz 0x000005b8 memsz 0x000005b8 flags r-x

LOAD off 0x000005b8 vaddr 0x080495b8 paddr 0x080495b8 align 2**12

filesz 0x0000002c memsz 0x0000002c flags rw-



Sections:

Idx Name Size VMA LMA File off Algn

SYMBOL TABLE:

no symbols

--------------------------------------------------------------------------------





我们可以看到start address是0x08048080,但有一个问题是Sections下面却什么都没有。这不是一个正常的程序?



接下来,使用十六进制工具 hexedit 查看程序信息。运行命令:hexedit cm2 ,显示如下:





代码:--------------------------------------------------------------------------------

00000000 7F 45 4C 46 01 01 01 00 4C 69 6E 75 78 00 00 00 .ELF....Linux...



00000010 02 00 03 00 01 00 00 00 80 80 04 08 34 00 00 00 ............4...



00000020 00 00 00 00 00 00 00 00 34 00 20 00 02 00 00 00 ........4. .....



00000030 00 00 00 00 01 00 00 00 00 00 00 00 00 80 04 08 ................



00000040 00 80 04 08 B8 05 00 00 B8 05 00 00 05 00 00 00 ................



00000050 00 10 00 00 01 00 00 00 B8 05 00 00 B8 95 04 08 ................



00000060 B8 95 04 08 2C 00 00 00 2C 00 00 00 06 00 00 00 ....,...,.......



00000070 00 10 00 00 77 6C EA 93 7F 55 50 58 E4 05 0B 0A ....wl...UPX....



00000080 31 ED 58 89 E1 8D 54 81 04 50 83 E4 F8 52 51 E8 1.X...T..P...RQ.



00000090 FE 01 00 00 F4 0A 00 24 49 6E 66 6F 3A 20 54 68 .......$Info: Th



000000A0 69 73 20 66 69 6C 65 20 69 73 20 70 61 63 6B 65 is file is packe



000000B0 64 20 77 69 74 68 20 74 68 65 20 55 50 58 20 65 d with the UPX e



000000C0 78 65 63 75 74 61 62 6C 65 20 70 61 63 6B 65 72 xecutable packer



000000D0 20 68 74 74 70 3A 2F 2F 75 70 78 2E 73 66 2E 6E http://upx.sf.n



000000E0 65 74 20 24 0A 00 24 49 64 3A 20 55 50 58 20 31 et $..$Id: UPX 1



000000F0 2E 32 34 20 43 6F 70 79 72 69 67 68 74 20 28 43 .24 Copyright (C



00000100 29 20 31 39 39 36 2D 32 30 30 32 20 74 68 65 20 ) 1996-2002 the



00000110 55 50 58 20 54 65 61 6D 2E 20 41 6C 6C 20 52 69 UPX Team. All Ri



00000120 67 68 74 73 20 52 65 73 65 72 76 65 64 2E 20 24 ghts Reserved. $

--------------------------------------------------------------------------------





从上面的信息中可以看到程序被UPX压缩了,接下来请确信你系统中已有UPX,如果没有请到上面给出的程序链接中下载。

运行命令“ upx -d cm2 ”把程序解压缩,显示如下:





代码:--------------------------------------------------------------------------------[ncc2008@localhost crack]$Content$nbsp;upx -d cm2

Ultimate Packer for eXecutables

Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004

UPX 1.25 Markus F.X.J. Oberhumer & Laszlo Molnar Jun 29th 2004



File size Ratio Format Name

-------------------- ------ ----------- -----------

10584 <- 4870 46.01% linux/386 cm2



Unpacked 1 file.

--------------------------------------------------------------------------------





接下来,我们再使用命令“ objdump -x cm2 ”来查看程序信息。如下:





代码:--------------------------------------------------------------------------------[ncc2008@localhost crack]$Content$nbsp;objdump -x cm2



cm2: file format elf32-i386

cm2

architecture: i386, flags 0x00000112:

EXEC_P, HAS_SYMS, D_PAGED

start address 0x080488b0



程序头:

PHDR off 0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2

filesz 0x000000c0 memsz 0x000000c0 flags r-x

INTERP off 0x000000f4 vaddr 0x080480f4 paddr 0x080480f4 align 2**0

filesz 0x00000013 memsz 0x00000013 flags r--

LOAD off 0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12

filesz 0x0000109c memsz 0x0000109c flags r-x

LOAD off 0x00002000 vaddr 0x0804a000 paddr 0x0804a000 align 2**12

filesz 0x00000398 memsz 0x00000ff0 flags rw-

DYNAMIC off 0x00002248 vaddr 0x0804a248 paddr 0x0804a248 align 2**2

filesz 0x000000e0 memsz 0x000000e0 flags rw-

NOTE off 0x00000108 vaddr 0x08048108 paddr 0x08048108 align 2**2

filesz 0x00000020 memsz 0x00000020 flags r--



动态节:

NEEDED libgtk-1.2.so.0

NEEDED libgdk-1.2.so.0

NEEDED libglib-1.2.so.0

NEEDED libc.so.6

INIT 0x8048758

FINI 0x8049074

HASH 0x8048128

STRTAB 0x804841c

SYMTAB 0x80481fc

STRSZ 0x225

SYMENT 0x10

DEBUG 0x0

PLTGOT 0x804a33c

PLTRELSZ 0x98

PLTREL 0x11

JMPREL 0x80486c0

REL 0x80486b8

RELSZ 0x8

RELENT 0x8

VERNEED 0x8048688

VERNEEDNUM 0x1

VERSYM 0x8048642



版本引用:

required from libc.so.6:

0x0d696911 0x00 03 GLIBC_2.1

0x0d696910 0x00 02 GLIBC_2.0



Sections:

Idx Name Size VMA LMA File off Algn

0 .interp 00000013 080480f4 080480f4 000000f4 2**0

CONTENTS, ALLOC, LOAD, READONLY, DATA

1 .note.ABI-tag 00000020 08048108 08048108 00000108 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

2 .hash 000000d4 08048128 08048128 00000128 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

3 .dynsym 00000220 080481fc 080481fc 000001fc 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

4 .dynstr 00000225 0804841c 0804841c 0000041c 2**0

CONTENTS, ALLOC, LOAD, READONLY, DATA

5 .gnu.version 00000044 08048642 08048642 00000642 2**1

CONTENTS, ALLOC, LOAD, READONLY, DATA

6 .gnu.version_r 00000030 08048688 08048688 00000688 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

7 .rel.dyn 00000008 080486b8 080486b8 000006b8 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

8 .rel.plt 00000098 080486c0 080486c0 000006c0 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

9 .init 00000017 08048758 08048758 00000758 2**2

CONTENTS, ALLOC, LOAD, READONLY, CODE

10 .plt 00000140 08048770 08048770 00000770 2**2

CONTENTS, ALLOC, LOAD, READONLY, CODE

11 .text 000007c4 080488b0 080488b0 000008b0 2**4

CONTENTS, ALLOC, LOAD, READONLY, CODE

12 .fini 0000001b 08049074 08049074 00001074 2**2

CONTENTS, ALLOC, LOAD, READONLY, CODE

13 .rodata 00000008 08049090 08049090 00001090 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

14 .eh_frame 00000004 08049098 08049098 00001098 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

15 .data 00000248 0804a000 0804a000 00002000 2**2

CONTENTS, ALLOC, LOAD, DATA

16 .dynamic 000000e0 0804a248 0804a248 00002248 2**2

CONTENTS, ALLOC, LOAD, DATA

17 .ctors 00000008 0804a328 0804a328 00002328 2**2

CONTENTS, ALLOC, LOAD, DATA

18 .dtors 00000008 0804a330 0804a330 00002330 2**2

CONTENTS, ALLOC, LOAD, DATA

19 .jcr 00000004 0804a338 0804a338 00002338 2**2

CONTENTS, ALLOC, LOAD, DATA

20 .got 0000005c 0804a33c 0804a33c 0000233c 2**2

CONTENTS, ALLOC, LOAD, DATA

21 .bss 00000c58 0804a398 0804a398 00002398 2**2

ALLOC

22 .comment 00000119 00000000 00000000 00002398 2**0

CONTENTS, READONLY

SYMBOL TABLE:

no symbols


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:23 , Processed in 0.127694 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部