-
-
[旧帖] [原创]处理UPX-Scrambler pack的注册机的脱壳 0.00雪花
-
发表于: 2008-3-29 15:21 3538
-
在看《软件加密技术内幕》,其中提到DebugAPI,正想学习一下补丁技术,
说以就那KEYMAKE做了个内存注册机,想看看他的实现方法,所以就有了下文,好了,开始工作。
UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay]
OD载入,ep处代码
0040DA7F > 90 nop
0040DA80 61 popad
0040DA81 BE 00B04000 mov esi,packer.0040B000
0040DA86 8DBE 0060FFFF lea edi,dword ptr ds:[esi+FFFF6000]
0040DA8C 57 push edi
0040DA8D 83CD FF or ebp,FFFFFFFF
0040DA90 EB 10 jmp short packer.0040DAA2
0040DA92 EB 00 jmp short packer.0040DA94
0040DA94 ^ EB EA jmp short packer.0040DA80
0040DA96 ^ EB E8 jmp short packer.0040DA80
0040DA98 8A06 mov al,byte ptr ds:[esi]
1,脱壳,bp LoadLibraryA两次后,alt+F9返回
0040DBA8 95 xchg eax, ebp
0040DBA9 8A07 mov al, byte ptr [edi]
0040DBAB 47 inc edi
0040DBAC 08C0 or al, al
0040DBAE ^ 74 DC je short 0040DB8C
0040DBB0 89F9 mov ecx, edi
0040DBB2 79 07 jns short 0040DBBB
0040DBB4 0FB707 movzx eax, word ptr [edi]
0040DBB7 47 inc edi
0040DBB8 50 push eax
0040DBB9 47 inc edi
0040DBBA B9 5748F2AE mov ecx, AEF24857
0040DBBF 55 push ebp
0040DBC0 FF96 74E50000 call dword ptr [esi+E574]
0040DBC6 09C0 or eax, eax
0040DBC8 74 07 je short 0040DBD1
0040DBCA 8903 mov dword ptr [ebx], eax
0040DBCC 83C3 04 add ebx, 4
0040DBCF ^ EB D8 jmp short 0040DBA9
0040DBD1 FF96 78E50000 call dword ptr [esi+E578]
0040DBD7 60 pushad
0040DBD8 - E9 AA4AFFFF jmp 00402687 //F2下断,shift+F9,到达OEP
00402687 8D4424 F8 lea eax, dword ptr [esp-8] //OEP,脱壳,完成
0040268B 64:8705 0000000>xchg dword ptr fs:[0], eax
00402692 BB D5264000 mov ebx, 004026D5
00402697 8925 58544000 mov dword ptr [405458], esp
0040269D 53 push ebx
0040269E 50 push eax
2,试运行,提示未与破解程序在同一目录
可能性:1,程序有自校验(bp CreateFileA等相关API未找到,于是有了第二种可能,overlay)
2,附加数据
WINHEX出场,打开packer,翻到文件末尾,发现Overlay在4800H处,复制附加数据,粘贴到dump出的文件尾(记录overlay粘贴的位置10FE0)。
对dump出的文件,从新载入,下 bp SetFilePointer,发现参数4800,修改为10FE0,保存。运行,在次出错。只好再分析。
分析注册机的特殊性,想到CreateFileA,再次 bp CreateFileA,到
0040141E E8 FD1D0000 call <jmp.&kernel32.GetFileSize>
00401423 2D E00F0100 sub eax, 4800 //4800改为10FE0
保存,运行,OK.
学习了一下KEYMAKE的工作原理,感谢看雪出如此好的书,实在是漂亮,等待《加密解密》第三版。
再次感谢看雪论坛提供的平台和大虾们的无私分享,也希望自己能有更大的进步。
说以就那KEYMAKE做了个内存注册机,想看看他的实现方法,所以就有了下文,好了,开始工作。
UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay]
OD载入,ep处代码
0040DA7F > 90 nop
0040DA80 61 popad
0040DA81 BE 00B04000 mov esi,packer.0040B000
0040DA86 8DBE 0060FFFF lea edi,dword ptr ds:[esi+FFFF6000]
0040DA8C 57 push edi
0040DA8D 83CD FF or ebp,FFFFFFFF
0040DA90 EB 10 jmp short packer.0040DAA2
0040DA92 EB 00 jmp short packer.0040DA94
0040DA94 ^ EB EA jmp short packer.0040DA80
0040DA96 ^ EB E8 jmp short packer.0040DA80
0040DA98 8A06 mov al,byte ptr ds:[esi]
1,脱壳,bp LoadLibraryA两次后,alt+F9返回
0040DBA8 95 xchg eax, ebp
0040DBA9 8A07 mov al, byte ptr [edi]
0040DBAB 47 inc edi
0040DBAC 08C0 or al, al
0040DBAE ^ 74 DC je short 0040DB8C
0040DBB0 89F9 mov ecx, edi
0040DBB2 79 07 jns short 0040DBBB
0040DBB4 0FB707 movzx eax, word ptr [edi]
0040DBB7 47 inc edi
0040DBB8 50 push eax
0040DBB9 47 inc edi
0040DBBA B9 5748F2AE mov ecx, AEF24857
0040DBBF 55 push ebp
0040DBC0 FF96 74E50000 call dword ptr [esi+E574]
0040DBC6 09C0 or eax, eax
0040DBC8 74 07 je short 0040DBD1
0040DBCA 8903 mov dword ptr [ebx], eax
0040DBCC 83C3 04 add ebx, 4
0040DBCF ^ EB D8 jmp short 0040DBA9
0040DBD1 FF96 78E50000 call dword ptr [esi+E578]
0040DBD7 60 pushad
0040DBD8 - E9 AA4AFFFF jmp 00402687 //F2下断,shift+F9,到达OEP
00402687 8D4424 F8 lea eax, dword ptr [esp-8] //OEP,脱壳,完成
0040268B 64:8705 0000000>xchg dword ptr fs:[0], eax
00402692 BB D5264000 mov ebx, 004026D5
00402697 8925 58544000 mov dword ptr [405458], esp
0040269D 53 push ebx
0040269E 50 push eax
2,试运行,提示未与破解程序在同一目录
可能性:1,程序有自校验(bp CreateFileA等相关API未找到,于是有了第二种可能,overlay)
2,附加数据
WINHEX出场,打开packer,翻到文件末尾,发现Overlay在4800H处,复制附加数据,粘贴到dump出的文件尾(记录overlay粘贴的位置10FE0)。
对dump出的文件,从新载入,下 bp SetFilePointer,发现参数4800,修改为10FE0,保存。运行,在次出错。只好再分析。
分析注册机的特殊性,想到CreateFileA,再次 bp CreateFileA,到
0040141E E8 FD1D0000 call <jmp.&kernel32.GetFileSize>
00401423 2D E00F0100 sub eax, 4800 //4800改为10FE0
保存,运行,OK.
学习了一下KEYMAKE的工作原理,感谢看雪出如此好的书,实在是漂亮,等待《加密解密》第三版。
再次感谢看雪论坛提供的平台和大虾们的无私分享,也希望自己能有更大的进步。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
赞赏
雪币:
留言: