通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络编程 >> 文章正文
菜鸟脱ExeCryptor的笔记
责任编辑:水土不服   更新日期:2007-11-3
 

 

三、修复OEP。

参考其他Borland Delphi文件修改OEP。

这个软件中有一个Borland Delphi文件Project1,没有加密。
-------------------------------------------------------------------------------------------------

---
0048FF74 > 55 push ebp
0048FF75 8BEC mov ebp,esp
0048FF77 83C4 F0 add esp,-10
0048FF7A 53 push ebx
0048FF7B B8 ACFC4800 mov eax,Project1.0048FCAC
0048FF80 E8 F760F7FF call Project1.0040607C ; F7跟随进入。

来到这里。
0040607C 53 push ebx
0040607D 8BD8 mov ebx,eax
0040607F 33C0 xor eax,eax
00406081 A3 9C104900 mov dword ptr ds:[49109C],eax
00406086 6A 00 push 0
00406088 E8 2BFFFFFF call <jmp.&kernel32.GetModuleHandleA> ; 多熟悉的函数!
-------------------------------------------------------------------------------------------------

---
修改OEP:
0063E9A0 > 55 push ebp
0063E9A1 8BEC mov ebp,esp
0063E9A3 83C4 F0 add esp,-10
0063E9A6 53 push ebx
0063E9A7 B8 30E26300 mov eax,AQTB_01.0063E230 ; 这里修改看下面②!
0063E9AC E8 FB86DCFF call 004070AC ; 这里修改看下面①!
0063E9B1 8B1D C0E26300 mov ebx, [63E2C0] ; AQTB_2.0043508C 看后面!
0063E9B7 68 A4EA6300 push 0063EAA4 ; ASCII "AQB2005"
0063E9BC 6A 00 push 0
0063E9BE 6A 00 push 0
0063E9C0 E8 6326DDFF call 00411028
0063E9C5 E8 BE27DDFF call 00411188
0063E9CA 3D B7000000 cmp eax, 0B7
0063E9CF 75 20 jnz short 0063E9F1
0063E9D1 6A 00 push 0
0063E9D3 6A 00 push 0
0063E9D5 68 A4EA6300 push 0063EAA4 ; ASCII "AQB2005"
0063E9DA E8 DD95DCFF call <jmp.&user32.RegisterClipboar>
-------------------------------------------------------------------------------------------------

--
①在dumped_.exe的OEP附近搜索:

push ebx
mov ebx,eax
xor eax,eax

搜索到这里就是了。
004070AC 53 push ebx
004070AD 8BD8 mov ebx,eax
004070AF 33C0 xor eax,eax
004070B1 A3 A4F06300 mov dword ptr ds:[63F0A4],eax
004070B6 6A 00 push 0
004070B8 E8 2BFFFFFF call <jmp.&kernel32.GetModuleHandleA>

从OEP开始进入第一个call的入口地址这样就确定为004070AC。

②确定0063E9A7 B8 30E26300 mov eax,AQTB_01.00xxxxxx。
确定了OEP开始进入第一个call的入口地址后,F7进入跟踪。
现在另开OD打开用没有修复OEP的dumped_.exe,在反汇编窗口Ctrl+G:004070AC。
在004070AC设内存访问断点,Shift+F9,运行。
出现注册窗口,点“试用”,断下。

看积存器:eax=0063E230

为确认继续,F8步进到这里。
004070E6 E8 4DD5FFFF call 00404638 ; F7进入。
004070EB 5B pop ebx

F8步进到这里。
00404672 E8 61FFFFFF call 004045D8 ; F7进入。
00404677 C3 retn

004045D8 55 push ebp
004045D9 8BEC mov ebp, esp
004045DB 53 push ebx ; AAAA_.0063E230 这里入栈了。
004045DC 56 push esi
004045DD 57 push edi
004045DE A1 40966400 mov eax, [649640]
004045E3 85C0 test eax, eax
004045E5 74 4B je short 00404632
004045E7 8B30 mov esi, [eax] ; 注意[eax]地址!

ds:[0063E230]=000000ED

数据窗口中定位:
0063E230 000000ED
0063E234 0063E238 AAAA_.0063E238
0063E238 00407120 AAAA_.00407120
0063E23C 004070F0 AAAA_.004070F0
0063E240 00406F14 AAAA_.00406F14
0063E244 00406EC0 AAAA_.00406EC0

得到:
0063E9A7 B8 30E26300 mov eax,0063E230



====================================================================================================
四、初始化修改。

修复OEP变形代码,完成初始化过程中,又出现内存异常,只能到启动界面,这个问题很费了一番周折,主要是


础太差的原因造成。

也好,拿出没有修复OEP的dumped_.exe,对照在第一个call后补的代码行:

0063E9AC E8 FB86DCFF call 004070AC ; 这里修改看下面①!
0063E9B1 8B1D C0E26300 mov ebx, [63E2C0] ; AQTB_2.0043508C

经动态跟踪,没有修复OEP的dumped_.exe的是:

00634D90 E8 1723DDFF call prj_safe.004070AC
00634D95 8B1D C0E26300 mov ebx,dword ptr ds:[63E2C0] ; prj_safe.0063FC14

修改:
0063E9AC E8 FB86DCFF call 004070AC ; 这里修改看下面①!
00634D95 8B1D C0E26300 mov ebx,dword ptr ds:[63E2C0] ; prj_safe.0063FC14

004070AC=prj_safe.004070AC

保存,运行。到了“用户登陆”界面,测试正常。



====================================================================================================
五、文件优化。

这个软件未脱壳前为1.95 MB,想当然的把3个壳区断删除,重建PE。
运行后问题出来了,键入用户名后,又跳出一个口令窗口,我没有设密码呀!?
载入未优化的软件,在壳的3个区段F2,断在一个壳区段,只得将这个区段重新装配进去。
启动脱壳软件,运行畅快了。
就是文件字节还是有些大,为3.9MB,还是基础太差,汗!



====================================================================================================
六、脱壳ExeCryptor小结

这是纯属个人理解,千万别误导你的正确思路。

1、必须有一个能反反跟踪的OD,建议用OllyICE。
2、转存时PETools比LordPE成功率高。
3、未加壳前文件的TLS在idata区段头。
4、ExeCryptor加密的IAT区段在BBS段下面的一个区段(Borland Delphi)。
5、脱壳前准备一个同语言的参考文件,最好是本软件文件内的。
6、保留一个ImportREC修复的最初文件,修复参考用。
7、有些SDK是存在壳区段,优化时要注意。

本人是个菜鸟,不是很懂编程语言,作为脱壳过程中走过的失败,给像我一样的初哥们参考。

上一页  [1] [2] 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题