好友
阅读权限40
听众
最后登录1970-1-1
|
楼主|
小生我怕怕
发表于 2008-10-5 01:52
00469BD3 >E8 00000000 call UnPackMe.00469BD8//OD载入
00469BD860pushad//单步一步f8
00469BD9E8 4F000000 call UnPackMe.00469C2D//在此执行ESP定律 hr esp
00469BDE68 2E607CDC push DC7C602E //在设置好上面的硬件断点的同时下bp VirtualProtect
00469BE341inc ecx //紧跟着shift+f9
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C801AD4 >8BFFmov edi,edi //程序停于此处
7C801AD655push ebp//ait+b取消断点
7C801AD78BECmov ebp,esp //断点取消后 ait+f9返回到用户代码
7C801AD9FF75 14 push dword ptr ss:[ebp+14]
━━━━━━━━━━━━━━━━━━━━━━━━━━
00471047C745 EC 0000000>mov dword ptr ss:[ebp-14],0 //程序停于此处
0047104EEB 09 jmp short UnPackMe.00471059 //此时开始处理我们的iat,寻找magic jump
004710508B55 EC mov edx,dword ptr ss:[ebp-14] //这里要感谢ximo兄的纠正,看天草教程把我迷糊啦
0047105383C2 01 add edx,1 //ctrl+b搜索二进制 8901
004710568955 EC mov dword ptr ss:[ebp-14],edx
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B2728901mov dword ptr ds:[ecx],eax //程序停在此处,有朋友就会以为这里即加密IAT的地方
0046B274837D E0 00cmp dword ptr ss:[ebp-20],0//天草教程的方法到这里把他NOP掉即可
0046B27875 13 jnz short UnPackMe.0046B28D//其实不然,这里不行的,应该这里IAT没有加密的迹象
0046B27AFF35 00A54700 push dword ptr ds:[47A500] //ctrl+L搜索下一个8901
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B3D18901mov dword ptr ds:[ecx],eax //来到这里,大家注意观察他上下的代码无加密指针的现象
0046B3D38B45 F0 mov eax,dword ptr ss:[ebp-10]//继续ctrl+L搜索下一个8901
0046B3D6EB 02 jmp short UnPackMe.0046B3DA
0046B3D833C0xor eax,eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B7058901mov dword ptr ds:[ecx],eax//这里也同样没有处理
0046B7078B45 0C mov eax,dword ptr ss:[ebp+C]//继续ctrl+L搜索下一个8901
0046B70A8B4D BC mov ecx,dword ptr ss:[ebp-44]
0046B70D8B49 08 mov ecx,dword ptr ds:[ecx+8]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B9048901mov dword ptr ds:[ecx],eax//这里也同样没有处理
0046B9068B45 10 mov eax,dword ptr ss:[ebp+10] //继续ctrl+L搜索下一个8901
0046B9098338 00 cmp dword ptr ds:[eax],0
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046B9518901mov dword ptr ds:[ecx],eax//这里也同样没有处理
0046B9536A FF push -1 //继续ctrl+L搜索下一个8901
0046B955C745 D4 0100000>mov dword ptr ss:[ebp-2C],1
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046BDB78901mov dword ptr ds:[ecx],eax//这里也同样没有处理
0046BDB98B45 0C mov eax,dword ptr ss:[ebp+C]//继续ctrl+L搜索下一个8901
0046BDBC8338 00 cmp dword ptr ds:[eax],0
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046BFA18901mov dword ptr ds:[ecx],eax//这里也同样没有处理
0046BFA38B45 D8 mov eax,dword ptr ss:[ebp-28] //继续ctrl+L搜索下一个8901
0046BFA6FF70 04 push dword ptr ds:[eax+4]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046C0F58901mov dword ptr ds:[ecx],eax//这里同样没有处理
0046C0F7FF75 08 push dword ptr ss:[ebp+8] //继续ctrl+L搜索下一个8901
0046C0FA8B0D 70D94700 mov ecx,dword ptr ds:[47D970]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046C43E8901mov dword ptr ds:[ecx],eax//这里同样没有处理
0046C4408B45 0C mov eax,dword ptr ss:[ebp+C]//继续ctrl+L搜索下一个8901
0046C4438338 00 cmp dword ptr ds:[eax],0
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046C65E8901mov dword ptr ds:[ecx],eax//这里同样没有处理
0046C6606A FF push -1 //继续ctrl+L搜索下一个8901
0046C662C745 C8 0100000>mov dword ptr ss:[ebp-38],1
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046C87D8901mov dword ptr ds:[ecx],eax //这里同样没有处理
0046C87F6A FF push -1//继续ctrl+L搜索下一个8901
0046C881C745 D4 0100000>mov dword ptr ss:[ebp-2C],1
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046CA758901mov dword ptr ds:[ecx],eax//这里同样没有处理
0046CA778B45 0C mov eax,dword ptr ss:[ebp+C]//继续ctrl+L搜索下一个8901
0046CA7A8360 20 00and dword ptr ds:[eax+20],0
0046CA7E8B45 E0 mov eax,dword ptr ss:[ebp-20]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046D3C78901mov dword ptr ds:[ecx],eax//这里同样没有处理
0046D3C96A FF push -1 //继续ctrl+L搜索下一个8901
0046D3CBC745 B8 0100000>mov dword ptr ss:[ebp-48],1
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046D9898901mov dword ptr ds:[ecx],eax //这里同样没有处理
0046D98B6A FF push -1//继续ctrl+L搜索下一个8901
0046D98D8B45 D0 mov eax,dword ptr ss:[ebp-30]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046DA0E8901mov dword ptr ds:[ecx],eax//这里同样没有处理
0046DA10837D 0C 00cmp dword ptr ss:[ebp+C],0//继续ctrl+L搜索下一个8901
0046DA1474 08 je short UnPackMe.0046DA1E
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046DADC8901mov dword ptr ds:[ecx],eax //这里同样没有处理
0046DADEEB 72 jmp short UnPackMe.0046DB52//继续ctrl+L搜索下一个8901
0046DAE0A1 98D94700 mov eax,dword ptr ds:[47D998]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046DB508901mov dword ptr ds:[ecx],eax //这里同样没有处理
0046DB526A 01 push 1 //继续ctrl+L搜索下一个8901
0046DB5458pop eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046E4BD66:8901 mov word ptr ds:[ecx],ax //这里同样没有处理
0046E4C08B45 FC mov eax,dword ptr ss:[ebp-4] //继续ctrl+L搜索下一个8901
0046E4C348dec eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046E5CA66:8901 mov word ptr ds:[ecx],ax //这里同样没有处理
0046E5CD8B45 FC mov eax,dword ptr ss:[ebp-4] //继续ctrl+L搜索下一个8901
0046E5D048dec eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046E6C566:8901 mov word ptr ds:[ecx],ax //这里同样没有处理
0046E6C88B45 FC mov eax,dword ptr ss:[ebp-4] //继续ctrl+L搜索下一个8901
0046E6CB48dec eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046EE3166:8901 mov word ptr ds:[ecx],ax //这里同样没有处理
0046EE348B45 F8 mov eax,dword ptr ss:[ebp-8] //继续ctrl+L搜索下一个8901
0046EE3740inc eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046EE4F66:8901 mov word ptr ds:[ecx],ax//这里同样没有处理
0046EE528B45 F8 mov eax,dword ptr ss:[ebp-8]//继续ctrl+L搜索下一个8901
0046EE5540inc eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046EE6D66:8901 mov word ptr ds:[ecx],ax //这里同样没有处理
0046EE708B45 F8 mov eax,dword ptr ss:[ebp-8] //继续ctrl+L搜索下一个8901
0046EE7340inc eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0046EE8B66:8901 mov word ptr ds:[ecx],ax //这里同样没有处理
0046EE8E5Bpop ebx //继续ctrl+L搜索下一个8901
0046EE8FC9leave
━━━━━━━━━━━━━━━━━━━━━━━━━━
00470EF68901mov dword ptr ds:[ecx],eax //这里同样没有处理
00470EF8EB 2C jmp short UnPackMe.00470F26 //继续ctrl+L搜索下一个8901
00470EFA8B55 F4 mov edx,dword ptr ss:[ebp-C]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0047162055push ebp //以下属于个人见解,高手不要见笑
004716218BECmov ebp,esp
0047162383EC 10 sub esp,10
00471626C745 FC 0000000>mov dword ptr ss:[ebp-4],0
0047162D833D 5C214800 0>cmp dword ptr ds:[48215C],0
0047163475 0A jnz short UnPackMe.00471640
00471636B9 0A0000EF mov ecx,EF00000A//这里即注入垃圾指令
0047163BE8 D72F0000 call UnPackMe.00474617
004716408B45 08 mov eax,dword ptr ss:[ebp+8]
004716438B08mov ecx,dword ptr ds:[eax]
0047164551push ecx
004716468B0D 5C214800 mov ecx,dword ptr ds:[48215C]
0047164CE8 13650000 call UnPackMe.00477B64
004716518945 F8 mov dword ptr ss:[ebp-8],eax
00471654837D F8 00cmp dword ptr ss:[ebp-8],0//判断执行注入
0047165874 45 je short UnPackMe.0047169F//跳走即不进行指针处理,即magic jump
0047165A8D55 F0 lea edx,dword ptr ss:[ebp-10] //把上面的je改jmp跳走就可以闭开加密指针
0047165D52push edx//改好magic jump后,大家应该还记得我们下的硬件段点吧
0047165E6A 04 push 4//我们shift+f9即可
004716606A 04 push 4
004716628B45 08 mov eax,dword ptr ss:[ebp+8]
0047166550push eax
00471666FF15 40D84700 call dword ptr ds:[47D840] ; kernel32.VirtualProtect
0047166C85C0test eax,eax
0047166E75 0A jnz short UnPackMe.0047167A
00471670B9 0B0000EF mov ecx,EF00000B //此句即向现在所在IAT进行加密
00471675E8 9D2F0000 call UnPackMe.00474617
0047167A8B4D 08 mov ecx,dword ptr ss:[ebp+8]
0047167D8B55 F8 mov edx,dword ptr ss:[ebp-8]
004716808B02mov eax,dword ptr ds:[edx]
004716828901mov dword ptr ds:[ecx],eax//这里应该是把垃圾指针放到某个位置,所以NOP掉这里也可以
━━━━━━━━━━━━━━━━━━━━━━━━━━
004697B158pop eax//程序停于此处
004697B258pop eax//取消硬件断点
004697B3FFD0call eax //f8单步到这里时,单步f7跟进,即到我们的OEP
004697B5E8 F5CB0000 call UnPackMe.004763AF
004697BACCint3
━━━━━━━━━━━━━━━━━━━━━━━━━━
0045159C55push ebp //我们的oep
0045159D8BECmov ebp,esp//直接运行我们的OD插件把程序dump
0045159F83C4 F0 add esp,-10//用OD插件dump即可不用修复
004515A2B8 BC134500 mov eax,UnPackMe.004513BC
004515A7E8 8846FBFF call UnPackMe.00405C34
004515ACA1 E02F4500 mov eax,dword ptr ds:[452FE0]
004515B18B00mov eax,dword ptr ds:[eax]
004515B3E8 F8E5FFFF call UnPackMe.0044FBB0 |
|