笔记三之AsProtect
来源:互联网 发布:centos打开终端快捷键 编辑:程序博客网 时间:2024/06/10 03:24
ASProtect 1.2 / 1.2c-> Alexey Solodovnikov
最后一次异常
在RET处下断
内存镜像00401000下断
直达OEP!!
手脱ASProtect1.23
1.忽略除内存访问的所有断点,隐藏OD
2。来到最后一次异常
3。RET下断,运行到这。
4。下硬件断点 hr XXXX或在00401000下断,运行
5。直达OEP
6.修复,借助辅助工具
手脱ASProtect1.23 RC4
版本的判断:
判断版本:
ASProtect 1.23 RC4 按shift+f9键26次后来到典型异常,在最近处的retn处设断,跳过异常,f8步跟就会来到foep。
ASProtect 1.31 04.27 按shift+f9键36次后来到典型异常,在最近处的retn处设断,跳过异常,f8步跟就会来到foep。
ASProtect 1.31 05.18 按shift+f9键40次后来到典型异常,在最近处的retn处设断,跳过异常,f8步跟就会来到foep。
ASProtect 1.31 06.14 按shift+f9键38次后来到典型异常,在最近处的retn处设断,跳过异常,f8步跟就会来到foep。
1、忽略除内存访问的所有异常,隐藏一下OD,SHIFT+F9 26次后来到最后一次异常
00C739EC 3100 xor dword ptr ds:[eax],eax //断在这
00C739EE 64:8F05 00000000 pop dword ptr fs:[0]
00C739F5 58 pop eax
00C739F6 833D B07EC700 00 cmp dword ptr ds:[C77EB0],0
00C739FD 74 14 je short 00C73A13
00C739FF 6A 0C push 0C
00C73A01 B9 B07EC700 mov ecx,0C77EB0
00C73A06 8D45 F8 lea eax,dword ptr ss:[ebp-8]
00C73A09 BA 04000000 mov edx,4
00C73A0E E8 2DD1FFFF call 00C70B40
00C73A13 FF75 FC push dword ptr ss:[ebp-4]
00C73A16 FF75 F8 push dword ptr ss:[ebp-8]
00C73A19 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00C73A1C 8338 00 cmp dword ptr ds:[eax],0
00C73A1F 74 02 je short 00C73A23
00C73A21 FF30 push dword ptr ds:[eax]
00C73A23 FF75 F0 push dword ptr ss:[ebp-10]
00C73A26 FF75 EC push dword ptr ss:[ebp-14]
00C73A29 C3 retn
2、在RETN处下断,SHIFT+F9,取消断点
3、在堆栈窗口找显示程序名的下面2行,下HR 12FFA4
4、一直F8,到这里
00C85C47 BD 4D5CC800 mov ebp,0C85C4D
00C85C4C FF55 03 call dword ptr ss:[ebp+3] //到这F7跟
00C85C4F E8 595CC800 call 0190B8AD
00C85C54 9A E969F29A 5DF3 call far F35D:9AF269E9
00C85C5B EB 02 jmp short 00C85C5F
00C85C5D CD20 1BE9EB02 vxdjump 2EBE91B
00C85C63 CD20 33E8EB02 vxdjump 2EBE833
00C85C69 CD20 EB010F8D vxdcall 8D0F01EB
00C85C6F 6C ins byte ptr es:[edi],dx
00C85C70 75 37 jnz short 00C85CA9
00C85C72 5D pop ebp
00C85C73 EB 01 jmp short 00C85C76
00C85C75 C7 ??? ; 未知命令
5、一直F7跟,找抽取代码
(1)
00C84F0A 55 push ebp
00C84F0B 8BEC mov ebp,esp
00C84F0D 6A FF push -1
00C84F0F 68 78E35300 push 53E378
00C84F14 68 407B4F00 push 4F7B40
00C84F19 64:A1 00000000 mov eax,dword ptr fs:[0]
55 8B EC 6A FF 68 78 E3 53 00 68 40 7B 4F 00 64 A1 00 00 00 00
(2)
00C84F22 50 push eax
00C84F23 64:8925 00000000 mov dword ptr fs:[0],esp
00C84F2A 83EC 58 sub esp,58
50 64 89 25 00 00 00 00 83 EC 58
(3)
00C84F30 53 push ebx
53
(4)
00C84F34 56 push esi
56
(5)
00C84F38 57 push edi
00C84F39 8965 E8 mov dword ptr ss:[ebp-18],esp
57 89 65 E8
6、把代码汇总一下
55 8B EC 6A FF 68 78 E3 53 00 68 40 7B 4F 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8
7、继续F7,来到这,就F8
00C85B74 51 push ecx
00C85B75 57 push edi
00C85B76 9C pushfd
00C85B77 FC cld
00C85B78 BF B55BC800 mov edi,0C85BB5
00C85B7D B9 5E140000 mov ecx,145E
00C85B82 F3:AA rep stos byte ptr es:[edi]
00C85B84 9D popfd
00C85B85 5F pop edi
00C85B86 59 pop ecx
00C85B87 C3 retn
8、一直F8到这里,然后向上看
004F27CF FF15 9CC25200 call dword ptr ds:[52C29C]
004F27D5 33D2 xor edx,edx
004F27D7 8AD4 mov dl,ah
004F27D9 8915 34306900 mov dword ptr ds:[693034],edx
004F27DF 8BC8 mov ecx,eax
004F27E1 81E1 FF000000 and ecx,0FF
004F27E7 890D 30306900 mov dword ptr ds:[693030],ecx
004F27ED C1E1 08 shl ecx,8
004F27F0 03CA add ecx,edx
004F27F2 890D 2C306900 mov dword ptr ds:[69302C],ecx
004F27F8 C1E8 10 shr eax,10
004F27FB A3 28306900 mov dword ptr ds:[693028],eax
004F2800 6A 01 push 1
004F2802 E8 933B0000 call SoWorker.004F639A
9、
004F27A4 C3 retn
004F27A5 33C0 xor eax,eax
004F27A7 ^ EB F8 jmp short SoWorker.004F27A1
004F27A9 0000 add byte ptr ds:[eax],al //这里就是真正的OEP了
004F27AB 0000 add byte ptr ds:[eax],al
004F27AD 0000 add byte ptr ds:[eax],al
004F27AF 0000 add byte ptr ds:[eax],al
004F27B1 0000 add byte ptr ds:[eax],al
004F27B3 0000 add byte ptr ds:[eax],al
004F27B5 0000 add byte ptr ds:[eax],al
004F27B7 0000 add byte ptr ds:[eax],al
004F27B9 0000 add byte ptr ds:[eax],al
004F27BB 0000 add byte ptr ds:[eax],al
004F27BD 0000 add byte ptr ds:[eax],al
004F27BF 0000 add byte ptr ds:[eax],al
004F27C1 0000 add byte ptr ds:[eax],al
004F27C3 0000 add byte ptr ds:[eax],al
004F27C5 0000 add byte ptr ds:[eax],al
004F27C7 0000 add byte ptr ds:[eax],al
004F27C9 0000 add byte ptr ds:[eax],al
004F27CB 0000 add byte ptr ds:[eax],al
004F27CD 0000 add byte ptr ds:[eax],al
004F27CF FF15 9CC25200 call dword ptr ds:[52C29C]
004F27D5 33D2 xor edx,edx
10、补上代码,脱壳,修复
ASProtect之以壳解壳 被偷取的代码很多的情况下
一些简单的以壳解壳理论,这样脱壳完程序会很大
实战以壳解壳
1、忽略除内存访问外的所有异常,SHIFT+F9,来到最后一次异常
2、来到最近的RETN
3、打开内存镜像,在00401000处下断,SHIFT+F9,到达假OEP,记下
004F27CF FF15 9CC25200 call dword ptr ds:[52C29C]
004F27D5 33D2 xor edx,edx
004F27D7 8AD4 mov dl,ah
004F27D9 8915 34306900 mov dword ptr ds:[693034],edx
004F27DF 8BC8 mov ecx,eax
004F27E1 81E1 FF000000 and ecx,0FF
004F27E7 890D 30306900 mov dword ptr ds:[693030],ecx
004F27ED C1E1 08 shl ecx,8
004F27F0 03CA add ecx,edx
004F27F2 890D 2C306900 mov dword ptr ds:[69302C],ecx
004F27F8 C1E8 10 shr eax,10
004F27FB A3 28306900 mov dword ptr ds:[693028],eax
004F2800 6A 01 push 1
004F2802 E8 933B0000 call SoWorker.004F639A
004F2807 59 pop ecx
004F2808 85C0 test eax,eax
004F280A 75 08 jnz short SoWorker.004F2814
4、重新来,重复上面1和2步,下hr 0012ff68,SHIFT+F9,取消断点,F8,来到最佳的以壳解壳地方
00C85793 BB A2000000 mov ebx,0A2 //最佳地
00C85798 0BDB or ebx,ebx
00C8579A 75 07 jnz short 00C857A3
00C8579C 894424 1C mov dword ptr ss:[esp+1C],eax
00C857A0 61 popad
00C857A1 50 push eax
00C857A2 C3 retn
00C857A3 E8 00000000 call 00C857A8
00C857A8 5D pop ebp
00C857A9 81ED 4DE14B00 sub ebp,4BE14D
5、完整转存,区域转存,编辑完区段后要重建pe
6、修复
- 笔记三之AsProtect
- ASPROTECT 2.x 脱壳系列(三)
- [版本构造]ASProtect初探---软件防护系列学习笔记
- ASProtect Features
- 《新闻》之笔记三
- java笔记之三
- Java笔记之三
- Jabber学习笔记 之三
- WinCE学习笔记之三
- 正则表达式笔记之三
- Selenium学习笔记之三
- SQLite学习笔记之三
- JSP学习笔记之三
- C++学习笔记之三
- python学习笔记之三
- 《C++程序设计语言》笔记之三
- SQLite学习笔记之三
- JAVA学习笔记之三
- 远程推送通知
- 【Thinking in Java笔记】怎么使用protected关键字
- 7. JavaScript RegExp 对象
- AndroidStudio下BuildTypes和ProductFlavors动态编译并重命名apk
- register、volatile、inline
- 笔记三之AsProtect
- 博文卡特职位招聘
- poj-Eqs-哈希
- word文档转为pdf格式的一些小窍门
- php 获取远程资源,发送数据
- Web Server使用IIS读取共享文件
- 前序遍历二叉树
- js 继承【 原型(prototype)】
- PAT 02-3. 求前缀表达式的值(25) Python