unpackme 一个oep好找关键是修复
脱了的写教程吧.....:lol :lol :lol 不错。支持下。 anti-dump?输入表的修复貌似也不难,REC的等级一修复就OK的,懒得分析加密的地方了.
[ 本帖最后由 ximo 于 2008-12-28 16:49 编辑 ] 没有发现什么难的啊!简单写下步骤
0046B060 >90 nop //OD载入
0046B061 90 nop
0046B062 60 pushad
0046B063 E8 00000000 call UnPackMe.0046B068 //在此执行ESP定律
0046B068 5D pop ebp
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B7DF 50 push eax //ESP定律后程序停在这里
0046B7E0 33C0 xor eax,eax
0046B7E2 64:FF30 push dword ptr fs:
0046B7E5 64:8920 mov dword ptr fs:,esp
0046B7E8 EB 01 jmp short UnPackMe.0046B7EB //单步F8走过这个JMP
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B7EB 0000 add byte ptr ds:,al //停在这里一串空代码,注意堆栈窗口
0046B7ED 0000 add byte ptr ds:,al
0046B7EF 0000 add byte ptr ds:,al
0046B7F1 0000 add byte ptr ds:,al
━━━━━━━堆栈窗口━━━━━━━━━━━━━━
0012FFBC 0012FFE0 指针到下一个 SEH 记录
0012FFC0 0046B78E SE 句柄 //SE句柄处,右键数据窗口跟随
0012FFC4 7C816FD7 返回到 kernel32.7C816FD7
0012FFC8 7C930738 ntdll.7C930738
0012FFCC FFFFFFFF
━━━━━━━数据窗口━━━━━━━━━━━━━━
0046B78E57EC8B55 //右键断点---内存访问
0046B7928B10458B //下好断,shift+f9运行
0046B7960000C4B8
0046B79A3337FF00
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B78E 55 push ebp //程序停在这里
0046B78F 8BEC mov ebp,esp //取消内存断点,F8单步向下走
0046B791 57 push edi
0046B792 8B45 10 mov eax,dword ptr ss:
0046B795 8BB8 C4000000 mov edi,dword ptr ds:
0046B79B FF37 push dword ptr ds:
0046B79D 33FF xor edi,edi
0046B79F 64:8F07 pop dword ptr fs:
0046B7A2 8380 C4000000 0>add dword ptr ds:,8
0046B7A9 8BB8 A4000000 mov edi,dword ptr ds:
0046B7AF C1C7 07 rol edi,7
0046B7B2 89B8 B8000000 mov dword ptr ds:,edi //走到这里时注意EDI里的值就是我们的OEP
0046B7B8 B8 00000000 mov eax,0 //CTRL+G输入EDI的值004271B0
0046B7BD 5F pop edi
0046B7BE C9 leave
0046B7BF C3 retn
━━━━━━━━━━━━━━━━━━━━━━━━━━
004271B0 55 push ebp //F2下断,SHIFT+F9运行
004271B1 8BEC mov ebp,esp //运行importRCE把程序修复,修复时无效指针用等级1就可以解决
004271B3 6A FF push -1 //直接importRCE把程序DUMP,修复即可
004271B5 68 600E4500 push UnPackMe.00450E60
004271BA 68 C8924200 push UnPackMe.004292C8
004271BF 64:A1 00000000mov eax,dword ptr fs:
004271C5 50 push eaxIAT加密指令是这个
0046B66C 8932 mov dword ptr ds:,esi
这句NOP掉就可以啦!
[ 本帖最后由 小生我怕怕 于 2008-12-28 17:35 编辑 ] 0012FFBC 0012FFE0 指针到下一个 SEH 记录
0012FFC0 0046B78E SE 句柄 //SE句柄处,右键数据窗口跟随
0012FFC4 7C816FD7 返回到 kernel32.7C816FD7
0012FFC8 7C930738 ntdll.7C930738
0012FFCC FFFFFFFF
这里不用这么麻烦,直接上面的空代码处F8,之后再一下alt+f9就到oep了,无效指针用importRCE 1.6的没反应,必须用1.7,其实我的原意是想大家不用importRCE而是手动修复这些无效指针 加密语句在这个地址完成 0046B66C
执行输入表我们都是1.6修复的! 内存映射,项目 21
地址=00463000
大小=00008000 (32768.)
物主=UnPackMe 00400000
区段=.rsrc
包含=resources
类型=Imag 01001002
访问=R
初始访问=RWE
内存映射,项目 17
地址=00401000
大小=0004A000 (303104.)
物主=UnPackMe 00400000
区段=.text
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
两次内存到达OEP
004271B0 55 push ebp
004271B1 8BEC mov ebp,esp
004271B3 6A FF push -1
004271B5 68 600E4500 push UnPackMe.00450E60
004271BA 68 C8924200 push UnPackMe.004292C8
004271BF 64:A1 00000000mov eax,dword ptr fs:
004271C5 50 push eax
修复用等级一 修复可以运行
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
(手动修复
0046B66C 8932 mov dword ptr ds:,esi ; 这里应该NOP掉
可以找到部分 IAT 指针 好像有什么东东 到不了OEP 郁闷中) 都这么懒的,都不是手动修复:( :( 原帖由 jmty2008 于 2008-12-30 11:17 发表 http://bbs.52pojie.cn/images/common/back.gif
都这么懒的,都不是手动修复:( :(
你只要先到OEPDUMP一份,然后从载程序,把我说的加密地址NOP掉,在次运行程序填上OEP,IAT指针就回来啦,修复即可! 期待楼主发个IAT加密的分析 :victory:
页:
[1]
2