首页
社区
课程
招聘
[原创]linux 下 upx 脱壳笔记
发表于: 2008-12-20 13:57 20725

[原创]linux 下 upx 脱壳笔记

2008-12-20 13:57
20725

linux很少有需要crack的软件,所以最近总是自娱自乐。自己写的软件自己破着玩但是由于都是知道自己的手段,没有什么意思。真的希望有高手们写些crackme for linux 。
最近看了看windows的脱壳大致的理解了脱壳的原理,之前没有怎么接触脱壳,通常只是选择没有壳的软件看看。在linux下的壳没有找到几个。只找到了一个upx的壳,在windows下是个弱壳。实际上在linux下面也是弱壳,完全可以使用"upx -d"的命令解决问题。但我总是喜欢自己手动的。呵呵....纯属于自娱自乐。
ok,开始我们的linux的upx的脱壳之旅.........
我在选择工具的时候花了很多时间,忽然发现GDB在upx面前是那么的苍白无力...也终于知道为什么有人说GDB不适合做逆向了...虽然软件在调试器里可以正常于运行,正常下断。但是根本无法查看反汇编的代码.......。
无奈无奈....使用传说中最好的工具 IDA 为此我特地简单的学习了一下IDC脚本的使用方法...
没有什么资料可以参考,是一件很不愉快的事情,因为不知道能不能成功。不管了,一步一步来吧...
我用“upx -d“ 脱出了原来的文件,发现文件是全的,没有任何部分丢失,所以我相信这些文件会出现在进程空间的某个时间的某个角落,这个很大的坚定了我手动脱壳的信心(但是实际上到这篇文章的结尾我也没有能够在找到完整的程序文件,但我相信理论上内存空间中应该会出现完整的文件的...)。

我的加壳软件是我上次文章中用到做外挂的mines(扫雷游戏)。先找到了upx-3.03-i386_linux 软件 附件中我会给出的免的度这篇文章的人去寻找了。
对我们目标软件加壳,命令如下,的确是个好用的压缩壳软件,直接有54%的压缩律。

[jun@beijihuCom dumpupx]$ ./upx mines
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2008
UPX 3.03        Markus Oberhumer, Laszlo Molnar & John Reiser   Apr 27th 2008

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     13960 ->      7556   54.13%  linux/elf386   mines                         

Packed 1 file.
[jun@beijihuCom dumpupx]$ 

[jun@beijihuCom dumpupx]$ readelf -e ./mines
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 03 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - Linux
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0xc02598
  Start of program headers:          52 (bytes into file)
  Start of section headers:          0 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         2
  Size of section headers:           40 (bytes)
  Number of section headers:         0
  Section header string table index: 0

There are no sections in this file.

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000000 0x00c01000 0x00c01000 0x01d60 0x01d60 R E 0x1000
  LOAD           0x0002fc 0x0804b2fc 0x0804b2fc 0x00000 0x00000 RW  0x1000

(gdb) b *0xc02598
Breakpoint 1 at 0xc02598
(gdb) r
Starting program: /home/jun/Crack/dumpupx/mines 
warning: shared library handler failed to enable breakpoint
(no debugging symbols found)

Breakpoint 1, 0x00c02598 in ?? ()
(gdb) disassemble
No function contains program counter for selected frame.
(gdb) 


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 8
支持
分享
最新回复 (16)
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
图片上焦点不清楚,大家联系截图的上下文看看。有条件的可以调试一下就可以看清楚图片的内容..截图处理的不是很好.... 见谅
2008-12-20 14:01
0
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
linux下的东西很吸引人啊!!!
2008-12-20 17:39
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
想用GDB反汇编的,找不到程序入口,发现真的很难
2008-12-20 17:52
0
雪    币: 155
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
学习了!
idal 我一直没安装成功,郁闷哦。。是不是需要什么图形开发包。
现在只好集中精力研究GDB和DDD了,希望找到好的分析方法
2008-12-20 18:35
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
6
如网上所说,gdb确实不适合做逆向...普通代源的软件用它调试是很好。
关于IDA linux 安装,他的图形功能我于一直没有用上,但是其他功能是不需要X-windows 支持的。控制台就可以运行了.....
2008-12-20 19:53
0
雪    币: 190
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
就是缺少像OD这样的动态调试工具   以前倒是找到一个  代码太老了 没编译通过
2008-12-20 20:06
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
8
有嘛?放出来啊....呵呵...
2008-12-21 13:59
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
受益匪浅!十分感谢,用了一下,这个脚本好像对于变种upx也好用。
2009-6-19 16:31
0
雪    币: 116
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不是gdb不能反,而是方法不对

用x/100i 0x00c02598
2009-8-13 22:48
0
雪    币: 433
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
受益了,最近想要解决一个ELF的程序。正在筹划中。
2010-11-9 20:40
0
雪    币: 12515
活跃值: (5258)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12

请问Linux里难到就只有一个UPX壳吗
2013-4-1 15:43
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
13
不知道,你可以找找。
2013-4-26 15:32
0
雪    币: 12515
活跃值: (5258)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不是找不到,是没有
想有偿请人写个
2013-4-30 11:43
0
雪    币: 110
活跃值: (308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
fseek(dumpfile,0x30,0);
      fputc(0x00,dumpfile);   
      fputc(0x00,dumpfile);   
      fputc(0x00,dumpfile);   
      fputc(0x00,dumpfile);   
为什么这几个字节要写0?
2014-2-24 20:54
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
哈哈 学习了。
2018-7-19 04:59
0
雪    币: 1251
活跃值: (3695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mark
2019-5-30 15:58
0
雪    币: 2381
活跃值: (109)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
能问下楼主的linux版本吗 我用centos编译 dump.idc 老是报错
2019-10-20 14:49
0
游客
登录 | 注册 方可回帖
返回
//