吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17320|回复: 16
收起左侧

[原创] 吾爱破解脱壳练习七------ORiEN

   关闭 [复制链接]
小生我怕怕 发表于 2008-10-4 00:27
一转眼我们的脱壳练习已经第6期啦,在这其中我相信许多的朋友也学习到了东西
必能脱掉此壳
本期考核主题为:ORiEN v2.11 - 2.12
1.脱壳后的文件大家以千脑形式上传,目的是为了便于隐藏文件和节约论坛空间
2.脱壳后的文件,请大家以脱文附带脱壳后程序打包压缩传于千脑网盘
3.对于回帖过程中千万不要出现灌水,否则BAN了ID
4.对于有优秀脱文或优秀脱壳方法的朋友,给于适当威望奖励
5.鉴于此练习是针对论坛的所有人,请大家踊跃参加,如果不是脱了壳教作业的,请不要顶帖子,方便管理查阅,及时给出评分
6.以下为需要设置威望的格式
7.脱壳一以周期计算,(周期=等于二天)
8.脱壳周期一结束,就开始公布答案让大家能有更充分的学习环境,让不懂脱的朋友去寻找你失误的地方争取早日赶上论坛的积极份子
9.我们要的是脱文,并不是脱壳机去脱的,如果用脱机脱了别拿来,请一定附带上脱文

10.对本次参加加密壳脱壳练习的,给出脱文全部给予5CB奖励,能分析出IAT加密所在,不使用importRCE等修复工具的给10CB


鉴于脱壳练习发展的趋势良好,观察了下载量,的确有明显的增长,证明很多的坛友
是怀着对脱壳破解的热爱的,所以经过管理组商议,由3天进行一次的脱壳练习,改成每两天一次的脱壳练习,有助于大家对
技巧的熟练,脱壳练习是经过了我们多翻难度测试,才发布出来,所以希望大家好好珍惜如此好好时机学习,不怕你不懂,就怕你不学


在一次申明:对于不是交作业顶帖的人,一律扣处10CB,严重的扣处威望处理,请大家自觉,保持良好的学习环境

由于本次脱壳练习,我们测试失败的原因,特决定此次脱壳练习,由明天晚上12点结束,开展下一期脱壳练习!


练习一:(结果已经公布)
http://www.52pojie.cn/thread-10496-1-1.html
最佳分析:第10楼unpack

练习二:(结果已经公布)
http://www.52pojie.cn/thread-10607-1-1.html
最佳分析:第9楼lqiulu

练习三:(结果已经公布)
http://www.52pojie.cn/thread-10688-1-1.html
最佳分析:第11楼傻人有傻福

练习四:(结果已经公布)
http://www.52pojie.cn/thread-10850-1-1.html
最佳分析:第11楼维护世界和平

练习五:(结果已经公布)
http://www.52pojie.cn/thread-10990-1-1.html
最佳分析:第3楼维护世界和平

练习六:(结果已经公布)
http://www.52pojie.cn/thread-11112-1-1.html
最佳分析:第12楼ximo


UnPackMe.rar

225 KB, 下载次数: 1090, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
fbhell + 1 + 1 刚看完,学习了!!
min-gong + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 小生我怕怕 发表于 2008-10-4 01:16
在来说说看fly脱文学来的最佳dump时机
━━━━━━━━━━━━━━━━━━━━━━━━━━
BP GetProcAddress [ESP]<004A6000&[ESP+0C]<004A6000
1.jpg
━━━━━━━━━━━━━━━━━━━━━━━━━━
004A0000 > /E9 5D010000 jmp UnPackMe.004A0162 //OD载入
004A0005 |CEinto //在命令行下段; BP GetProcAddress [ESP]<004A6000&[ESP+0C]<004A6000
004A0006 |D1CEror esi,1//下好段点后shift+f9
004A0008 |CD 0D int 0D
004A000A |0A2D 2D2D2D2D or ch,byte ptr ds:[2D2D2D2D]
004A0010 |2D 2D2D2D2D sub eax,2D2D2D2D
━━━━━━━━━━━━━━━━━━━━━━━━━━
0012FF5C 004A2ADD/CALL 到 GetProcAddress 来自 UnPackMe.004A2AD8
0012FF60 7C800000|hModule = 7C800000 (kernel32)
0012FF64 00455738\ProcNameOrOrdinal = "DeleteCriticalSection"
0012FF68 00455000UnPackMe.00455000 //这里即我们的RVA的地址,即RVA:00455000-00400000基址=55000
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C80ADA0 >8BFFmov edi,edi //ait+b取消断点,ait+f9返回
7C80ADA255push ebp
7C80ADA38BECmov ebp,esp
7C80ADA551push ecx
7C80ADA651push ecx
7C80ADA753push ebx
━━━━━━━━━━━━━━━━━━━━━━━━━━
004A2ADD /EB 07 jmp short UnPackMe.004A2AE6 //程序停在这里
004A2ADF |88FCmov ah,bh //打开我们的lordPE把程序dump
004A2AE1 |B6 FF mov dh,0FF//切记是完整转存
004A2AE3 |65:18CD sbb ch,cl
004A2AE6 \EB 02 jmp short UnPackMe.004A2AEA
004A2AE8FFF0push eax
004A2AEA85C0test eax,eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
搜索命令序列:ctrl+s,输入如下代码
jmp eax
int 0EB
sti
━━━━━━━━━━━━━━━━━━━━━━━━━━
004A1AF1FFE0jmp eax //在此f2下断,shift+f9运行
004A1AF3CD EB int 0EB //程序即停在上面,即跳向我们的oep
004A1AF5FBsti //程序停下后,单步一步f8
004A1AF6EB 10 jmp short UnPackMe.004A1B08
004A1AF833C0xor eax,eax
004A1AFAEB 06 jmp short UnPackMe.004A1B02
━━━━━━━━━━━━━━━━━━━━━━━━━━
0045159C55push ebp//我们的oep
0045159D8BECmov ebp,esp //此时用OD插件看下我们OEP地址是多少
0045159F83C4 F0 add esp,-10 //熟悉的朋友就直接一眼看出来就是5159c
004515A2B8 BC134500 mov eax,UnPackMe.004513BC //记录一下
004515A7E8 8846FBFF call UnPackMe.00405C34//在次打开我们的lordPE的PE编辑器,选择我们刚脱壳的文件
004515ACA1 E02F4500 mov eax,dword ptr ds:[452FE0]
004515B18B00mov eax,dword ptr ds:[eax]
004515B3E8 F8E5FFFF call UnPackMe.0044FBB0
━━━━━━━━━━━━━━━━━━━━━━━━━━
如下图为修改前:
该前.jpg
如下图为修改后:
改后.jpg
━━━━━━━━━━━━━━━━━━━━━━━━━━
目录表修改前:
目录修改前.JPG
目录表修改后:
目录修改后.jpg
━━━━━━━━━━━━━━━━━━━━━━━━━━
最后重建一下PE,优化下程序,即我们脱壳完成!

dumped.rar

353 KB, 下载次数: 2, 下载积分: 吾爱币 -1 CB

zapline 发表于 2008-10-4 00:30
沙发
···········
技术还不行,无法解决
写下找到OEP的方法,修复的方法不知道
学习ing·····

var addr
sto
sto ;单步两次

mov addr,esp ;ESP定律
bphws addr,"r"
run ;跑
BPHWC addr

sto
sto
sto
sto
sto
sto
sto;单步七次

cmt eip,"OEP!"

ret
 楼主| 小生我怕怕 发表于 2008-10-4 00:35
////////////////////////////////////////////////////////////////////////////////////////////////////// /// ORiEN v2.11 - 2.12 -> Fisun Alexander */// /// by 小生我怕怕QQ:4586631 /// /// 2008.10.02 /// /////////////////////////////////////////////////////////////////////////////////////////////////////// var addr//定义一个变量addrsto //单步,也就是F8sto //单步,也就是F8mov addr,esp//把此处ESP的地址给变量addr bphws addr,"r"//下硬件读取断点,也就是硬件访问断点 run //运行,也就是F9 BPHWC addr//取消断点sto //单步,也就是F8sto //单步,也就是F8sto //单步,也就是F8sto //单步,也就是F8sto //单步,也就是F8sto //单步,也就是F8sto //单步,也就是F8cmt eip,"友情提示:这里就是OEP!" //在EIP处,也就是现在OD停留了位置加注释 MSG "友情提示:修复时把无效指针直接删除,不要用剪切"//加个对话框,给出一些提示信息 ret //结束脚本 
 楼主| 小生我怕怕 发表于 2008-10-4 00:40
004A0000 > /E9 5D010000 jmp UnPackMe.004A0162//OD载入
004A0005 |CEinto //单步一步F8
004A0006 |D1CEror esi,1
004A0008 |CD 0D int 0D
004A000A |0A2D 2D2D2D2D or ch,byte ptr ds:[2D2D2D2D]
004A0010 |2D 2D2D2D2D sub eax,2D2D2D2D
━━━━━━━━━━━━━━━━━━━━━━━━━━
004A016260pushad //来到这里
004A0163E8 783B0000 call UnPackMe.004A3CE0 //在这里执行ESP定律
004A01682Fdas
004A0169FCcld
004A016A3BAC95 AA3AFCC4 cmp ebp,dword ptr ss:[ebp+edx*4+C4FC3AAA>
━━━━━━━━━━━━━━━━━━━━━━━━━━
004A1ADBB8 9C150500 mov eax,5159C//程序停于此处
004A1AE083F8 00 cmp eax,0//单步一路F8走起
004A1AE374 13 je short UnPackMe.004A1AF8
004A1AE505 00004000 add eax,UnPackMe.00400000; ASCII "MZP"
004A1AEAEB 08 jmp short UnPackMe.004A1AF4
004A1AEC49dec ecx
━━━━━━━━━━━━━━━━━━━━━━━━━━
004A1AF1- FFE0jmp eax//这里飞向OEP
004A1AF3CD EB int 0EB
004A1AF5FBsti
004A1AF6EB 10 jmp short UnPackMe.004A1B08
━━━━━━━━━━━━━━━━━━━━━━━━━━
0045159C55push ebp//运行lordpe脱壳
0045159D8BECmov ebp,esp //在运行importRCE修复
0045159F83C4 F0 add esp,-10 //修复时会出现两个无效指针,直接删除,不要用剪切
004515A2B8 BC134500 mov eax,UnPackMe.004513BC
004515A7E8 8846FBFF call UnPackMe.00405C34
004515ACA1 E02F4500 mov eax,dword ptr ds:[452FE0]
━━━━━━━━━━━━━━━━━━━━━━━━━━

dumped_.rar

355 KB, 下载次数: 20, 下载积分: 吾爱币 -1 CB

lqiulu 发表于 2008-10-4 01:07
004A0000 > /E9 5D010000 jmp UnPackMe.004A0162//OD载入停在这里,F8单步,跳到下面。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
004A016260pushad//跳到这里,单步
004A0163E8 783B0000 call UnPackMe.004A3CE0 //这里ESP定律。hr esp shift+f9运行。
004A01682Fdas
004A0169FCcld
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
004A1ADBB8 9C150500 MOV,5159C//程序停在这里,下面一直F8.
004A1AE083F8 00 CMP EAX, 0
004A1AE374 13 JESHORT 004A1AF8
004A1AE505 00004000 ADD EAX, 00400000; ASCII "MZP"
004A1AEAEB 08 JMP SHORT 004A1AF4
004A1AEC49DEC ECX
004A1AEDE5 24 INEAX, 24
004A1AEF15 20FFE0CD ADC EAX, CDE0FF20
004A1AF4^ EB FB JMP SHORT 004A1AF1 //这里F7进入。到达oep。
===========================================================================
0045159C55PUSHEBP
0045159D8BECMOV EBP, ESP
0045159F83C4 F0 ADD ESP, -10
004515A2B8 BC134500 MOV EAX, 004513BC
004515A7E8 8846FBFF CALL00405C34
004515ACA1 E02F4500 MOV EAX, DWORD PTR [452FE0]
004515B18B00MOV EAX, DWORD PTR [EAX]
004515B3E8 F8E5FFFF CALL0044FBB0
004515B8A1 E02F4500 MOV EAX, DWORD PTR [452FE0]
004515BD8B00MOV EAX, DWORD PTR [EAX]
004515BFBA FC154500 MOV EDX, 004515FC; ASCII ".52pojie.cn"
004515C4E8 F7E1FFFF CALL0044F7C0

dump后修复。两个无效指针,经多次试验,cut修复不能正常运行,delete后可正常。不知咋回事。
下雪天 发表于 2008-10-4 01:37
【文章标题】: 52破解练习7--急速脱壳
【文章作者】: 小小菜鸟
【软件名称】: 52破解练习7
【下载地址】: 自己搜索下载
【使用工具】: ORiEN V1.X-V2.X -> Fisun A.V. *
【软件介绍】: ODPEID lordpeImpREC FINAL 1.7汉化版
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
这个壳有个技巧呵呵
其实也是本壳的关键
当OD载入以后 出现了问题
错误的或者未知的32位可执行文件
一看就是在PE这里动了手脚
点了确定
就到了
7C921231C3 retn
7C9212328BFF mov edi,edi
7C92123490 nop
7C92123590 nop

系统断点-----------这个壳的弱点也在于此

到底是怎么回事呢?
呵呵 原来壳在文件的
RVA上做了手脚

好了
开工
打开
LordPE_hh.EXE
点击PE编辑器
看看PE头的基本信息
在最最后面有一个栏目
就是本次男主角
看到大小 为
0000000A
但是对照一般的文件
这个大小一般都是
00000010
所以
一个 巧妙的办法诞生了
修改它
改为
00000010
点击保存 确定

再重建PE
文件 最小化到99%
OK 载入
OD了
入口处
004A0000 > /E9 5D010000jmp UnPackMe.004A0162
004A0005 |CE into
004A0006 |D1CE ror esi,1
004A0008 |CD 0Dint 0D
004A000A |0A2D 2D2D2D2Dor ch,byte ptr ds:[2D2D2D2D]
单步
004A016260 pushad--------------ESP招牌动作入栈操作
004A0163E8 783B0000call UnPackMe.004A3CE0------寄存器的ESP--------数据窗口跟随


数据窗口 下断点-------硬件访问---DW

004A1ADBB8 9C150500mov eax,5159C----到这里删除硬件断点
004A1AE083F8 00cmp eax,0
004A1AE374 13je short UnPackMe.004A1AF8
004A1AE505 00004000add eax,UnPackMe.00400000; ASCII "MZP"
004A1AEAEB 08jmp short UnPackMe.004A1AF4
单步
004A1AEF15 20FFE0CDadc eax,CDE0FF20
004A1AF4^ EB FBjmp short UnPackMe.004A1AF1-------跳

到这里
004A1AF1- FFE0 jmp eax----看EAX大跳转啊呵呵; UnPackMe.0045159C
004A1AF3CD EBint 0EB
004A1AF5FB sti
直接到OEP
0045159C55 push ebp-----------------oep============DELPHI
0045159D8BEC mov ebp,esp
0045159F83C4 F0add esp,-10
004515A2B8 BC134500mov eax,UnPackMe.004513BC
004515A7E8 8846FBFFcall UnPackMe.00405C34
接下来LORDPE
IAT的时候有两个指针无法修复
直接剪切转存这样就正常了 运行了














--------------------------------------------------------------------------------
【经验总结】
这个是脱壳巧法,建立在对PE的了解的基础上
希望大家对这类壳多吸取经验教训
对PE的了解有助脱壳

--------------------------------------------------------------------------------
【版权声明】: 本文原创于小小菜鸟.小生我怕怕友情支持, 转载请注明作者并保持文章的完整, 谢谢!

2008年10月04日 1:23:29
















http://www.禁止使用网挣网盘/spac ... F%B07DUMP.rar/.page
http://www.禁止使用网挣网盘/spac ... %D1%BF%C7.rar/.page

诶累死了
我发个视频你看下吧
http://www.禁止使用网挣网盘/spac ... %D3%C6%B5.rar/.page
呵呵 我不知道自己电脑人品这么好

分数好少啊 这么巧妙的办法 分数这么少.....
感觉不是味道啊...........老大 我也奇怪为什么这样 可以
不过以后是大伙 研究的素材啊.............怎么说 我也发现了 一个特别的办法嘛

谢谢老大以后加油努力了
fox2006 发表于 2008-10-4 02:04
吾爱专题脱壳练习7
--------------------------------------------------------------------------------
【编写程序】:Borland Delphi 6.0 - 7.0
【调试环境】:WinXP、OllyDbg、PEiD、LordPE、ImportREC
【程序查壳】:ORiEN v2.11 - 2.12 -> Fisun Alexander *
【脱壳方法】:ESP定律+内存镜像法

————————————————————————————————————————————————

004A0000 > /E9 5D010000 jmp UnPackMe.004A0162 ; OD载入在此,F8步进
004A0005 |CEinto
004A0006 |D1CEror esi,1
004A0008 |CD 0D int 0D
-------------------------------------------------------------------------------------------
004A016260pushad
004A0163E8 783B0000 call UnPackMe.004A3CE0; F8到此,然后ESP定律
004A01682Fdas
004A0169FCcld
004A016A3BAC95 AA3AFCC4 cmp ebp,dword ptr ss:[ebp+edx*4+C4FC3AAA>
-------------------------------------------------------------------------------------------

004A1ADBB8 9C150500 mov eax,5159C ; 执行ESP定律运行到此,去断点,ALT+M,在00401000下内存断点,Shift+f9
004A1AE083F8 00 cmp eax,0
004A1AE374 13 je short UnPackMe.004A1AF8
004A1AE505 00004000 add eax,UnPackMe.00400000; ASCII "MZP"
004A1AEAEB 08 jmp short UnPackMe.004A1AF4

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

0045159C55push ebp ; 到达OEP,dump+修复
0045159D8BECmov ebp,esp
0045159F83C4 F0 add esp,-10
004515A2B8 BC134500 mov eax,UnPackMe.004513BC
004515A7E8 8846FBFF call UnPackMe.00405C34
004515ACA1 E02F4500 mov eax,dword ptr ds:[452FE0]
----------------------------------------------------------------------------------------

dump+修复步骤:在OEP处右键,用OLLYDUMP脱壳调试进程,在里面重建输入表选择方式2进行脱壳,然后用Import rec修复,会有两个错误,剪切掉,修复就OK了




吾爱专题脱壳练习7
zzage 发表于 2008-10-4 02:41
[s:44]
超神要我冒泡....先贴脱壳脚本!修复IAT!

gpa "GetModuleHandleA","kernel32.dll"
cmp $RESULT,0
je error
bp $RESULT
esto
rtu
bc $RESULT
find eip,#0F84????????3B83#
cmp $RESULT,0
je error
ADD $RESULT,1
mov [$RESULT],#85#

find eip,#B8????????83F80074#
cmp $RESULT,0
je error
bp $RESULT
esto
bc $RESULT
sto
sto
sto
sto
sto
sto
sto

cmt eip,"到OEP!IAT修复完成"
MSG "脚本制作 BY zzage"
ret

error:
MSG "运行错误,请检查错误后再继续执行脚本"
ret

练习七------ORiEN脱壳脚本.rar

1 KB, 下载次数: 6, 下载积分: 吾爱币 -1 CB

wgz001 发表于 2008-10-4 09:12
OD載入單步到此处
004A016260PUSHAD
也就是ESP F9运行 到此处

004A01004A20B5 /EB 04 JMP SHORT UnPackMe.004A20BB
004A20B7 |0BEBOR EBP,EBX
004A20B9 |F9STC
004A20BA |1FPOP DS ; 段位寄存器修饰
004A20BB \EB 06 JMP SHORT UnPackMe.004A20C3
经过几次ESP后到此处
004A1ADBB8 9C150500 MOV EAX,5159C
004A1AE083F8 00 CMP EAX,0
004A1AE374 13 JE SHORT UnPackMe.004A1AF8
004A1AE505 00004000 ADD EAX,UnPackMe.00400000; ASCII "MZP"
004A1AEAEB 08 JMP SHORT UnPackMe.004A1AF4
004A1AEC49DEC ECX
004A1AEDE5 24 IN EAX,24; I/O 命令
004A1AEF15 20FFE0CD ADC EAX,CDE0FF20

接下来单步F8 到这里
004A1AF1- FFE0JMP EAX; UnPackMe.0045159C
去了OEP了呵呵 开心!!!
0045159C55PUSH EBP
0045159D8BECMOV EBP,ESP
0045159F83C4 F0 ADD ESP,-10
004515A2B8 BC134500 MOV EAX,UnPackMe.004513BC
004515A7E8 8846FBFF CALL UnPackMe.00405C34
004515ACA1 E02F4500 MOV EAX,DWORD PTR DS:[452FE0]

接下来DUMP 了 修复 自动修复[s:17] 两个无效指针要手动
分别在0045518C和0045519C 两个无效指针处下硬件访问断点 重新OD载入程序可以找到两个指针
手动修复即可以
下面是指针

0045518C7C812F1Dkernel32.GetCommandLineA
004551907C80ABDEkernel32.FreeLibrary
004551947C8137D9kernel32.FindFirstFileA

004551987C80EDD7kernel32.FindClose
0045519C7C81CDDAkernel32.ExitProcess

个人思路不正确的地方还请多多指教!!!
dumped_.rar
QQ截图未命名.jpg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 07:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表