吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 16979|回复: 95

[原创逆向图文] 手动改造UPX壳,增加IAT保护

  [复制链接]
李沉舟 发表于 2018-1-25 23:07 | 显示全部楼层 |阅读模式

慌,市统考,给自己减压。(其实是班头说这次期末考试不淘汰人下普通班(某人已笑晕在厕所)期末考试考3天,还有2天学校加考,接连考5天,崩溃ing,求安慰,求拯救!)话说,过年亲戚问成绩怎么打太极?大佬们有经验没?
还有,我发现高级编辑器里面TAB键用不了啊。

====================================正文=====================================
随便拿Delphi7,新建一个VCL窗体程序,画一个按钮,写两行代码。这一步骤讲究的是什么呢?率性而为,反正没什么卵用。比如,俺写的是这玩意。
[Delphi] 纯文本查看 复制代码
procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageBox(0, '鸿雁在天鱼在水,惆怅此情难寄!', '', MB_ICONINFORMATION);
end;

编译,打开,点按钮,确认一切无误。
1.png
给它套上一层UPX的外壳。
2.png
OllyDbg载入它,找到OEP不用我多说了吧?ESP定律干掉,或者往EP后面找popad,下面的jmp就是了。
中断在OEP后,随便找一个API调用语句,比如jmp dword ptr[xxxxxxxx],或者call dword ptr[xxxxxxxx]啦,具体是编译器来说话的。

比如我找到了这里。
3.png
在CALL上面按回车,跟进这个CALL看看。
4.png
转到DUMP窗口看看,用ADDRESS模式,发现这里就是IAT了。



5.png
这里有一个比较坑爹的问题了,我们知道啊,这桌面时代,就是Microsoft(巨硬)和Borland(宝兰)两个公司在干仗,开发工具一般就是这两家公司的产品。
这编译器构造PE的时候,导入表的处理就有分歧了。
Microsoft的IAT是整整齐齐,用一个DWORD类型的0,隔开每个对应每个DLL的IAT,而Borland就坑爹了,它的IAT是散乱的,也就是说,每个DLL对应的IAT表可能在内存分布中是不连续的。所以,脱壳的时候,修复IAT,这Borland就是急死人了,最好就是找到外壳填充IAT的地方,来Patch它得到一份完整的IAT表。
6.png
往下面翻一翻,就能找到MessageBoxA了。可以拉到IAT表头部之前,自己预判,然后往后面找MessageBoxA在你系统上的地址。
如果你用的Delphi是XE版本,那么要注意,你需要找MessageBoxW!
在0x4521AC下一个硬件写入断点(DWORD)长度,重新运行程序,找到外壳在这里填充IAT。
注意,我中断了两次,第一次发现0x4521AC里面是0,第二次才来到正确地方。
[Asm] 纯文本查看 复制代码
0046531A   .  57            PUSH EDI                                     ;  压入API名
0046531B   .  48            DEC EAX
0046531C   .  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
0046531E   .  55            PUSH EBP                                     ;  压入DLL基址
0046531F   .  FF96 F05A0600 CALL DWORD PTR DS:[ESI+0x65AF0]              ;  取地址
00465325   .  09C0          OR EAX,EAX
00465327   .  74 07         JE SHORT Project1.00465330
00465329   .  8903          MOV DWORD PTR DS:[EBX],EAX                   ;  填充

现在,我们来考虑一下怎么给它设计一个API重定向。我参考了一下tELOCK壳。
00A80043   /EB 01           jmp     short 00A80046
00A80045   |90              nop
00A80046   \E8 0B000000     call    00A80056
00A8004B    33C4            xor     eax, esp
00A8004D    40              inc     eax
00A8004E    E9 0B000000     jmp     00A8005E
00A80053    98              cwde
00A80054    13C7            adc     eax, edi
00A80056    B8 8EBC9725     mov     eax, 0x2597BC8E
00A8005B    C3              retn
00A8005C    0BC2            or      eax, edx
00A8005E    90              nop
00A8005F    B8 8B14A800     mov     eax, 0xA8148B
00A80064    40              inc     eax
00A80065    FF30            push    dword ptr ds:[eax]               ; kernel32.GetVersion
00A80067    C3              retn


游客,如果您要查看本帖隐藏内容请回复

现在,给这个程序再添加一个区块,换个工具,因为LordPE不会自己往文件后面补数据。这次要添加在磁盘里面实际存在的区块。用来存放要执行的加密代码。 8.png


[Asm] 纯文本查看 复制代码
00A8005F    B8 8B14A800     mov     eax, 0xA8148B
00A80064    40              inc     eax
00A80065    FF30            push    dword ptr ds:[eax]               ; kernel32.GetVersion
00A80067    C3              retn

0x477000记得更新为0x466FFA






Patch完成后,看0x467000
9.png

修改的地方:
10.png

11.png

修复时,都是无效IAT。
12.png

打包一下,修改前后:
新建 WinRAR 压缩文件.rar (298.76 KB, 下载次数: 46)

小结:
思路很简单,找到壳填充IAT的地方,添加两个区块,一个放解密IAT的代码(stub),一个放我们加密IAT的代码。从壳跳到我们的区块去执行加密,然后,嘿嘿。

评分

参与人数 49威望 +1 HB +151 THX +28 收起 理由
xiaoxixpj + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
longge188 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
行行行行行行 + 1
消逝的过去 + 1
娄胖胖 + 1
车太震 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
yexing + 1
三月十六 + 1
微熊猫 + 1
北极星 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
fjgh + 1 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
武清一点点 + 1
叶落花开 + 1
boot + 2 + 1
h112233h456 + 1
missaa + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
bnjzzheng + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
liugu0hai + 1 + 1 [快捷评语]--你将受到所有人的崇拜!
lies + 1
gccc + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
316655906 + 1 [通知]学破解论坛即将在近期更名为吾爱汇编论坛WWW.52HB.COM
yese666 + 1
豆0o0豆 + 1
missczj + 1 + 1
hls1204088479 + 1
531814517 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
小G一小只 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
zwc123xyz + 2 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
playboy + 1
davidhee + 1 + 1 [快捷评语]--2021年,我们爱0爱1
大狮子 + 1
大彩笔 + 1 + 1
沐泽 + 1 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
wer1527 + 2 + 1 [快捷评语]--评分=感恩!简单却充满爱!感谢您的作品!
lyrong + 3 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
方长 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
耶稣 + 5 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
peter_king88 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
2lht_love + 2 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
wuxin162 + 1 论坛的秩序需要大家共同监督与维护,感谢!
TT94186 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
梦微凉 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
chenjinghappy + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
laodaoWULITOU + 3 + 1 ..大神啊。。。
jiqigouer + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
Shark恒 + 1 + 100 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2018-1-26 17:52 | 显示全部楼层

真不错,希望在闲暇之余,可以再给大家带来精彩教程!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
DNA 发表于 2018-1-26 18:45 | 显示全部楼层

共同学习,共同进步
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
youxigx 发表于 2018-1-27 01:58 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
jiqigouer 发表于 2018-1-27 05:52 | 显示全部楼层

谢谢分享啊,学习一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ICEFENG199 发表于 2018-1-27 19:24 来自手机端 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
chenjinghappy 发表于 2018-1-27 19:54 | 显示全部楼层

谢谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Rooking 发表于 2018-1-28 09:41 | 显示全部楼层

最喜欢看这种纯技术文章了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
www789 发表于 2018-1-30 17:16 | 显示全部楼层

谢谢分享,厉害
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
xpj3170734739 发表于 2018-1-30 17:26 | 显示全部楼层

共同学习,共同进步
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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