首页 > 学院 > 逻辑算法 > 正文

两分种搞定UPX壳

2019-09-10 09:02:31
字体:
来源:转载
供稿:网友

 
两分种搞定UPX壳
Author:yellow
Email:yellow@safechian.net
Home Page:www.safechina.net
Date:2004-01-19.夜

我从没有搞过破解只是在前段时间学习PE文件格式在看雪学院Down了一些资料明
天就要放假了闲来无事用一个小时把看雪学院的通览了一遍为
了练习搞定了几个CrackMe觉得也怪好玩的觉得!
Crack技术里的脱技术是非常有意思
我不想解释脱的概念什么的这方面的资料非常多好了不废话下面让开始讲解如何
在两分种内脱掉UPX的以前没有搞过Crack有什么Error的地方高手误笑!呵呵!

相关工具:

UPX 1.23W(用于压缩和加)
W32Dasm 10.0黄金汉化版(Cracker们和Hacker们都经常要用的)
OllyDbg 1.09c聆风听雨汉化版(这个汉化Bug很少很好用)
OllyDump(OllyDbg脱插件)

"开始"-->"程序"-->"附件"-->"游戏"-->"扫雷"-->"右击"-->"属性"-->"查找目标"

复制到工作目录下(我的是D:/temp/Crack/)使用UPX对扫雷程序加
命令如下:
d:/temp/crack>upx -9 winmine.exe -o swinmine.exe
目录下生成了一个名为swinmine.exe的已加程序

使用W32Dasm打开反汇编已经看不到引入和引出函数参考对话框和菜单参考字串参考全变成了

String Resource ID=00001: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00002: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌?
哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?quot;
String Resource ID=0!
0003: &q
uot;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00004: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00005: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00007: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00009: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00011: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00014: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"
String Resource ID=00014: "哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌"

先按Ctrl+End光标走到了最后一行再选择W32Dasm的"查找/查找文本"菜单输入"popad"选中
查找方向为向上找到这样的语句:

:0101BC28 FF96E8BC0100 !
call dword ptr [esi+0001BCE8]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
│:0101BBF0(C)

:0101BC2E 61 popad
:0101BC2F E99C81FEFF jmp 01003DD0;<==---

光标移到:0101BC2F E99C81FEFF jmp 01003DD0这句上选择"编辑/快速编辑"
菜单项将
E99C81FEFF000000000000000000000000000000改为
CCE99C81FEFF0000000000000000000000000000
(后面去掉两个一字节前面添加一字节的十六进制数的CC即汇编语句int 3User Break
Point中断调用)保存成Pswinmine.exe运行一下弹出一个MessageBox"Software Exception...
位置0101bc2f"出现一个未处理异常?出错了?没有!没有!是我们写入的int 3发出的!

清楚它的位置0101bc2f
再反汇编Pswinmine.exe看一下0x01!
01bc2f地
址的指令就明白了:

:0101BC28 FF96E8BC0100 call dword ptr [esi+0001BCE8]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
│:0101BBF0(C)

:0101BC2E 61 popad
:0101BC2F CC int 03;<==---
:0101BC30 E99C81FEFF jmp 01003DD1<==---

退出W32Dasm打开OllyDbg打开刚才打过用户中断调用补丁的Pswinmine.exe程序显示
"模块"Pwinmine"的快速统计测试报告说明它的代码总发也许是经过了压缩加密或者包含
很大数目的嵌入式数据.代码分析结果将会是非常不可靠的或者是简单而且错误的.您确定要
继续进行分析吗?"当然!
点"是"了再按F9程序会中断在0101bc2f因为我们int 3调用了User
Break Point中断控制权转到了OllyDbg其实加(加密)后程序需要在执行时由一小段程序
解密程序然后再跳转到解密后的代码执行这和Overflow攻击中使用的ShellCode编解码技
术惊人的相似ShellCode在解码以前只有一小段代码(通常是解码子程序)是可执行的其它未
经解码的代码(其实在未解码前它们同加过的软件代码一样是一系列毫无规则的错误的指令
甚至是根本不存在的指令代码)如果执行就会出现错误.
右击选"Dump Debuged Process"在Entry Point框输入3dd1注意是3dd1而不是3dd0输入保
存文件名123.exe点确定保存运行一下一切正常(这时程序已从内存中被脱出来).

退出OllyDbg打开W32Dasm再次反汇编123.exe(已脱UPX壳的扫雷程序)

菜单参考:
Menu: MenuID_01F4
Menu: MenuID_01F4 Item: ""
Menu: MenuID_01F4 Item: "??)(M)"
Menu: MenuID_01F4 Item: "?B)"
Menu: MenuID_01F4 Item: "-?I)"
Menu: MenuID_01F4 Item: "痼(S)"
Menu: MenuID_01F4 !
Item: "丕(E)"
Menu: MenuID_01F4 Item: "(L!
)"<
br>Menu: MenuID_01F4 Item: "I(C)..."
Menu: MenuID_01F4 Item: "(C) F1"
对话框参考:
Dialog: DialogID_0050
Dialog: DialogID_0258
Dialog: DialogID_02BC
字符参考:
String Resource ID=00001: "k?
String Resource ID=00003: "k??
String Resource ID=00004: "嗾Mn■h?
String Resource ID=00005: "
?
String Resource ID=00006: "? %d"
String Resource ID=00007: "%d ?
String Resource ID=00008: "Z
"
String Resource ID=00009: "?ОU

?
"
String Resource ID=00010: "?-ОU

?
"
String Resource ID=00011: "?丕

?
"
String Resource ID=00012: "k?
String Resource ID=00013: "by Robert Donner and Curt Johnson"
".chm"
"?
"?"
"CLSID/{ADB880A6-D8FF-11CF-9377-00AA003B7A11}/I"
"entpack.ini"
"Failed t!
o create Bitmap
"
"FLoad failed to create compatible "
"hhctrl.ocx"
"NTHelp.chm"
"Software/Microsoft/winmine"
"U
SVSW"
"winmine.hlp"
"2?"
一切收眼底引入函数参考仍然看不见有错误吗?不知道!可以正常运行应该是没有使用
Visual Studio的Depends工具看一下先引入函数和未加前一模一样应该没有什么问题
注意如果在这里能对PE文件头的Section Header进行一些重构那就脱的非常完美了如果
是其它需要注册的软件可以再进一步跟踪分析出注册码.

最后:
手工加上一个int 3调用是非常有用的有些软件使用OllyDbg来一步步跟踪分析是非
常费时费力的(需要解码很多数据我们感兴趣的不是加密过的代码而是未加密代码)而且
这样定位非常准确既然我们已经明白了UPX加的算法原理(类似与ShellCode编解码算法)
那我们就等它自己解码完了以后Dump一下不是非常爽快吗?这里只是简单分析了一种快速去
除一般UPX壳的方法有些软件还有反跟踪和反调试功能脱就没有那!
么简单了.

Crack也怪有意思的!呵呵!不过我不会再玩了!在这?
镒8魑
racker新年里破解顺利Bye!

(编辑:天命孤独)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选