【转贴】关于E语言写的使用硬盘序列号加密的程序通用切入点
关于E语言写的使用硬盘序列号加密的程序通用切入点--------------------------------------------------------------------------------
【文章标题】关于E语言写的使用硬盘序列号加密的程序通用切入点
【文章作者】hcbajiao(蓝雨)
【作者主页】http://www.9ycn.com
【作者邮箱】[email protected]
【所属组织】,http://poje.kmip.net:81QQ群成员
【软件名称】冒险岛加强外挂
【使用工具】OD,PEID
【软件限制】注册码
【破解平台】win xp sp2
【保护方式】UPX,Aspack
【开发语言】易语言
【本文写于】2005-04-27
【文章声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
—————————————————————————————————
【破解分析】
先用PEID查有壳,ASPack 2.12 -> Alexey Solodovnikov ,载入OD,手动解决,
430001pushad OD载入程序停在这里
430002call 冒险岛加.0043000A F7追入
430007jmp 45A004F7
43000Cpush ebp
43000Dretn
到这里
43000Apop ebp
43000Binc ebp
43000Cpush ebp
43000Dretn 返回
到这里
430008jmp short 冒险岛加.0043000E
43000Apop ebp
43000Binc ebp
43000Cpush ebp
43000Dretn
43000Ecall 冒险岛加.00430014 F7追入
430013jmp short 冒险岛加.00430072
430015mov ebx,-13
到这里
430014pop ebp
430015mov ebx,-13
43001Aadd ebx,ebp
43001Csub ebx,30000
430022cmp dword ptr ss:,0
430029mov dword ptr ss:,ebx
43002Fjnz 冒险岛加.0043039A
430035lea eax,dword ptr ss:
43003Bpush eax
43003Ccall dword ptr ss:
430042mov dword ptr ss:,eax
430048mov edi,eax
43004Alea ebx,dword ptr ss:
43004Dpush ebx
43004Epush eax
43004Fcall dword ptr ss:
向下找POPAD指令
在这里
4303AFpopad 在这里按F4
4303B0jnz short 冒险岛加.004303BA
4303B2mov eax,1
4303B7retn 0C
4303BApush 0
4303BFretn
按F4后指令变成这样
4303AFpopad
4303B0jnz short 冒险岛加.004303BA 跳
4303B2mov eax,1
4303B7retn 0C
4303BApush 冒险岛加.0042EADF 这里压入第二层壳的入口
4303BFretn 返回到第二层壳的入口
第二层壳的入口是这样
42EADFnop
42EAE0popad
42EAE1mov esi,冒险岛加.0041B000
42EAE6lea edi,dword ptr ds:
42EAECadd word ptr ds:,5
42EAF5push edi
42EAF6or ebp,FFFFFFFF
42EAF9jmp short 冒险岛加.0042EB0A
向下找PUSHAD指令
在这里
42EC36pushad 在这里按F4
42EC37jmp 冒险岛加.00403831 跳到真正的入口403831
42EC3Cadd byte ptr ds:,al
42EC3Eadd byte ptr ds:,al
42EC40add byte ptr ds:,al
42EC42add byte ptr ds:,al
42EC44add byte ptr ds:,al
真正的入口代码是这样
403831push ebp 停在这里,现在用LOADPE选完全脱壳DUMP内存中的文件
403832mov ebp,esp
403834push -1
403836push 冒险岛加.004062F0
40383Bpush 冒险岛加.00404CA4
403840mov eax,dword ptr fs:
403846push eax
403847mov dword ptr fs:,esp
40384Esub esp,58
403851push ebx
403852push esi
403853push edi
403854mov dword ptr ss:,esp
DUMP好文件然后用ImportREC修复导入表
OEP填00003831
这样就脱掉了,但是脱壳的过程中源文件的覆盖数据被丢弃了,要补回去,不然程序不能运行!
用HEXWORKSHOP将源文件物理地址15800后的数据全部拷贝到内存,然后贴到脱壳后文件的最后就可以了!
OD重新载入,F9运行,ALT+E,找到这个可执行模块,项目 5
基数=00E50000
大小=00116000 (1138688.)
入口=00EE96B4 krnln.<ModuleEntryPoint>
名称=krnln
文件版本=1, 0, 0, 1
路径=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\E_80003\krnln.fnr
双击,使用OD插件 Ultra string Reference的Find ASCII功能,找到\\.\PhysicalDrive0双击,到这里:
E5DC46 68 CC7FF200 push krnln.00F27FCC ; ASCII "\\.\PhysicalDrive0"
E5DC4B FF15 00D4F000call dword ptr ds:[<&KERNEL32.Create>; kernel32.CreateFileA
E5DC51 8BF0 mov esi,eax
E5DC53 83FE FF cmp esi,-1
E5DC56 0F84 C0000000je krnln.00E5DD1C
E5DC5C 57 push edi
E5DC5D B9 06000000 mov ecx,6
E5DC62 33C0 xor eax,eax
E5DC64 8D7C24 14 lea edi,dword ptr ss:
在1000DC46上按F2下断
现在关闭外挂程序,重新载入
F9运行程序后,断在这里了
F8走回到主程序里
422F68 83C4 10 add esp,10
422F6B C745 F0 00000000mov dword ptr ss:,0
422F72 68 00000000 push 0
422F77 BB C4060000 mov ebx,6C4
422F7C E8 D2310000 call 冒险岛加.00426153
422F81 83C4 04 add esp,4
422F84 68 01030080 push 80000301
422F89 6A 00 push 0
422F8B 50 push eax
422F8C 68 01000000 push 1
422F91 BB 68010000 mov ebx,168
422F96 E8 B8310000 call 冒险岛加.00426153
422F9B 83C4 10 add esp,10 这里看到机器码:1347656527
422F9E 8945 E8 mov dword ptr ss:,eax
422FA1 68 04000080 push 80000004
422FA6 6A 00 push 0
。。。。。向下走,这里
4236A6 83C4 04 add esp,4
4236A9 8B5D F0 mov ebx,dword ptr ss:
4236AC 85DB test ebx,ebx
4236AE 74 09 je short 冒险岛加.004236B9
4236B0 53 push ebx
4236B1 E8 7F2A0000 call 冒险岛加.00426135
4236B6 83C4 04 add esp,4
4236B9 8B45 D8 mov eax,dword ptr ss:
4236BC 8945 F0 mov dword ptr ss:,eax
4236BF 8B45 F0 mov eax,dword ptr ss:
4236C2 85C0 test eax,eax
4236C4 74 15 je short 冒险岛加.004236DB
4236C6 50 push eax 这里到看到注册码:DF65CDC2
4236C7 8BD8 mov ebx,eax
4236C9 E8 0AF7FFFF call 冒险岛加.00422DD8
4236CE 40 inc eax
4236CF 50 push eax
4236D0 E8 8A2A0000 call 冒险岛加.0042615F
内存注册机:
地址:4236C6
次数:1
第一字节:50
指令长度:1
内存方式寄存器EAX
完工
—————————————————————————————————
【总结】
这个方法对E语言写的使用硬盘序列号加密的程序应该有通用性。
好了,就写到这里,大家一起多研究研究。。。。。。
附软件原版可以自己试试
地址:http://www.9ycn.com/attachment.php?...&download=1
[ Last edited by dyangming on 2005-3-4 at 07:03 PM ] 来篇原创的啊 ! 易语言的不好破解,hcbajiao写的破文教了一招,精品贴啊 学习。收藏。 学习了一招也不错~ h汗!真厉害! E语言的跟VB的有些类似,烦!要在程序代码和系统库之间跳来跳去! 8错8错!
寺院
在世在世万事大吉
页:
[1]
2