分享
 
 
 

Armadillo v4.x COPYMEM II Code Injection(2)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

【目 标】:在DFCG里下了一个别人加壳后的CRACKME

【工 具】:OllyDbg v1.1(DIY Version)

【任 务】:不脱壳通过注入代码,破程序。

【操作平台】:Windows 2003 server

【作 者】: LOVEBOOM[DFCG][FCG][US]

【相关链接】: 自己去上网搜搜

【简要说明】: 这次挑了个别人加壳后的目标来操作,这样做可以防止我知道代码而去直接定位到相关位置进行修改。这个CrackME加上了全部的保护选项,这也算是ARM里很好的保护,我个人认为如果没有用个SDK话,这种保护是最强的了。

【详细过程】:

因为之前我已经写过了一篇这样的文章,所以我这次不会写的那么详细。如果你想了解更多,可以先看看我的上一篇文章。载入目标通过copymem2的脱壳方法,可以定位到程序的关键代码,把代码改为NOP就可以破解成功。

003A2AF6 90 NOP

003A2AF7 90 NOP

此时计算从起始位置到003a2af6处距离为:B86

记下PATCH ①为:003a2af6

重新有Copmem2脱壳的方法可以很快定位到关键代码:

0041ABFA . 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX

0041ABFD > 837D E0 00 CMP DWORD PTR SS:[EBP-20],0

0041AC01 . 75 11 JNZ SHORT 0041AC14

ECX=00019C06

0041ABFA E8 014C0200 CALL 0043F800

加密后为:97 96 8F 8D CA

记下PATCH ②为:41ABFA

通过SetFilePointer的方法定位到:

00AA0877 3341 24 XOR EAX,DWORD PTR DS:[ECX+24]

00AA087A 3345 DC XOR EAX,DWORD PTR SS:[EBP-24]

Stack SS:[0012D6F4]=A5989495 ;crc 值

记下CRC值:A5989495,起始处的距离为:20877

记下PATCH ③为:00aa0877

通过搜索定位到可以patch 3的地址,因为patch 3是动态申请和动态解压出来的代码。

搜索到以下地址:

00408334 |. 833D A0524400>CMP DWORD PTR DS:[4452A0],0

0040833B |. 0F85 54010000 JNZ 00408495

记下PATCH ④为:00408334

第一个patch 点在以下代码处已经解压出来:

004238C1 . 50 PUSH EAX ; |Buffer => 003A1F70

004238C2 . 8B4D EC MOV ECX,DWORD PTR SS:[EBP-14] ; |

004238C5 . 51 PUSH ECX ; |Address

ECX==00010F3F

004238C1 - E9 7ABF0100 JMP 0043F840

加密后为:33 3D 46 D8 5C

第5 个patch点已经出来了,因为这里有几次还原数据,所以要加条进行判断。

记下PATCH ⑤为:004238c0

分析完,开始写代码:

0043F7EE 0000 ADD BYTE PTR DS:[EAX],AL

0043F7F0 0000 ADD BYTE PTR DS:[EAX],AL ; 这里保存动态申请的地址

0043F7F2 0000 ADD BYTE PTR DS:[EAX],AL

0043F7F4 0000 ADD BYTE PTR DS:[EAX],AL

0043F7F6 0090 90909090 ADD BYTE PTR DS:[EAX+90909090],DL

0043F7FC 90 NOP

0043F7FD 90 NOP

0043F7FE 90 NOP

0043F7FF 90 NOP

0043F800 50 PUSH EAX ; Patch 2 处的代码

0043F801 A3 F0F74300 MOV DWORD PTR DS:[43F7F0],EAX ; 保存地址信息

0043F806 B8 34834000 MOV EAX,00408334

0043F80B 53 PUSH EBX

0043F80C BB 65F84300 MOV EBX,0043F865

0043F811 2BD8 SUB EBX,EAX

0043F813 83EB 05 SUB EBX,5

0043F816 C600 E8 MOV BYTE PTR DS:[EAX],0E8 ; 修改 patch 4的代码

0043F819 8958 01 MOV DWORD PTR DS:[EAX+1],EBX

0043F81C 5B POP EBX

0043F81D 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]

0043F821 8328 05 SUB DWORD PTR DS:[EAX],5

0043F824 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 还原并执行原代码

0043F826 C700 8945E083 MOV DWORD PTR DS:[EAX],83E04589

0043F82C C640 04 7D MOV BYTE PTR DS:[EAX+4],7D

0043F830 58 POP EAX

0043F831 C3 RETN

0043F832 90 NOP

0043F833 90 NOP

0043F834 90 NOP

0043F835 90 NOP

0043F836 90 NOP

0043F837 90 NOP

0043F838 90 NOP

0043F839 90 NOP

0043F83A 90 NOP

0043F83B 90 NOP

0043F83C 90 NOP

0043F83D 90 NOP

0043F83E 90 NOP

0043F83F 90 NOP

0043F840 817D EC 0010400>CMP DWORD PTR SS:[EBP-14],00401000 ; patch 5处的代码

0043F847 75 0C JNZ SHORT 0043F855 ; 这里判断是否解压出patch 1的正确代码

0043F849 50 PUSH EAX

0043F84A 05 860B0000 ADD EAX,0B86

0043F84F 66:C700 9090 MOV WORD PTR DS:[EAX],9090 ; 如果代码已经完全解码了,那么patch 1

0043F854 58 POP EAX

0043F855 50 PUSH EAX ; 执行壳代码

0043F856 8B4D EC MOV ECX,DWORD PTR SS:[EBP-14]

0043F859 51 PUSH ECX

0043F85A - E9 6740FEFF JMP 004238C6

0043F85F 90 NOP

0043F860 90 NOP

0043F861 90 NOP

0043F862 90 NOP

0043F863 90 NOP

0043F864 90 NOP

0043F865 50 PUSH EAX ; patch 4处的代码

0043F866 A1 F0F74300 MOV EAX,DWORD PTR DS:[43F7F0]

0043F86B 05 77080200 ADD EAX,20877

0043F870 53 PUSH EBX

0043F871 BB 9AF84300 MOV EBX,0043F89A ; 修改patch 3

0043F876 2BD8 SUB EBX,EAX

0043F878 83EB 05 SUB EBX,5

0043F87B C600 E8 MOV BYTE PTR DS:[EAX],0E8

0043F87E 8958 01 MOV DWORD PTR DS:[EAX+1],EBX

0043F881 5B POP EBX

0043F882 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]

0043F886 8328 05 SUB DWORD PTR DS:[EAX],5

0043F889 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 还原并执行原代码

0043F88B C700 833DA052 MOV DWORD PTR DS:[EAX],52A03D83

0043F891 C640 04 44 MOV BYTE PTR DS:[EAX+4],44

0043F895 58 POP EAX

0043F896 C3 RETN

0043F897 90 NOP

0043F898 90 NOP

0043F899 90 NOP

0043F89A 50 PUSH EAX ; patch 3处的代码

0043F89B C745 DC 959498A>MOV DWORD PTR SS:[EBP-24],A5989495 ; 写入原CRC值

0043F8A2 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]

0043F8A6 8328 05 SUB DWORD PTR DS:[EAX],5

0043F8A9 8B00 MOV EAX,DWORD PTR DS:[EAX]

0043F8AB C700 33412433 MOV DWORD PTR DS:[EAX],33244133 ; 还原并执行原壳代码

0043F8B1 C640 04 45 MOV BYTE PTR DS:[EAX+4],45

0043F8B5 58 POP EAX

0043F8B6 C3 RETN

写完后保存再运行就成功了。这篇文章写的很简单,很乱,其实这个壳的code injection也就是这么简单容易的:-)

Greetz:

Fly.Jingulong,yock,tDasm.David.hexer,hmimys,ahao.UFO(brother).alan(sister).all of my friends and you!

By loveboom[DFCG][FCG][US]

Email:loveboom#163.com

Date:2005-5-12 16:25

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有