破解作者】 jameshero 【使用工具】 PEID、flyODBG修改版 【破解平台】 winXP+SP2 【软件名称】 某服务端程序 【软件简介】 因为涉及到某些商业问题,在这就不说了,看方法吧 【加壳方式】 Armadillo 2.51 - 3.xx DLL Stub 【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:) -------------------------------------------------------------------------------- 【破解内容】
一。用PEID查看壳为:Armadillo 2.51 - 3.xx DLL Stub 具体版本不知道,看看先吧!
二。设置flyODBG忽略所有异常选项,OD自动隐藏插件帮你隐藏OD.
OD载入程序。
00944957 > 55 push ebp 00944958 8BEC mov ebp,esp 0094495A 53 push ebx 0094495B 8B5D 08 mov ebx,dword ptr ss:[ebp+8] 0094495E 56 push esi 0094495F 8B75 0C mov esi,dword ptr ss:[ebp+C] 00944962 57 push edi 00944963 8B7D 10 mov edi,dword ptr ss:[ebp+10] 00944966 85F6 test esi,esi ---------------------------------------------------------------
下断:BP GetModuleHandleA+5,Shift+F9运行,注意看堆栈:
--------------------------------------------------------------- 00069510 |00B452CA 返回到 00B452CA 来自 kernel32.GetModuleHandleA 00069514 |00069660 ASCII "kernel32.dll" ---------------------------------------------------------------
当堆栈变成上面的样子就可以返回了,我们ALT+F9返回程序!
---------------------------------------------------------------
00B452CA 8B0D 3C1EB700 mov ecx,dword ptr ds:[B71E3C] <---------返回到这 00B452D0 89040E mov dword ptr ds:[esi+ecx],eax 00B452D3 A1 3C1EB700 mov eax,dword ptr ds:[B71E3C] 00B452D8 391C06 cmp dword ptr ds:[esi+eax],ebx 00B452DB 75 16 jnz short 00B452F3 00B452DD 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C] 00B452E3 50 push eax 00B452E4 FF15 B842B600 call dword ptr ds:[B642B8] ; kernel32.LoadLibraryA 00B452EA 8B0D 3C1EB700 mov ecx,dword ptr ds:[B71E3C] 00B452F0 89040E mov dword ptr ds:[esi+ecx],eax 00B452F3 A1 3C1EB700 mov eax,dword ptr ds:[B71E3C] 00B452F8 391C06 cmp dword ptr ds:[esi+eax],ebx 00B452FB 0F84 2F010000 je 00B45430 <--------------MAGICJUMP,改JMP 00B45430 00B45301 33C9 xor ecx,ecx 00B45303 8B07 mov eax,dword ptr ds:[edi] 00B45305 3918 cmp dword ptr ds:[eax],ebx 00B45307 74 06 je short 00B4530F
----------------------------------------------------------------
(注意:下面的方法和FLY的不太一样)
现在我们Alt+M打开内存查看窗口,看到这个DLL的给个区段
---------------------------------------------------------------- 00870000 00001000 KingFor3 00870000 (itself) PE header //★ 这里下 内存访问 断点 00871000 0008B000 KingFor3 00870000 CODE 008FC000 00002000 KingFor3 00870000 DATA 008FE000 00001000 KingFor3 00870000 BSS ----------------------------------------------------------------
现在我们F9运行程序,中断在下面地址 ---------------------------------------------------------------- 00B585A7 0348 3C add ecx,dword ptr ds:[eax+3C] 〈------中断在这 00B585AA 898D FCD7FFFF mov dword ptr ss:[ebp-2804],ecx 00B585B0 A1 C8DFB600 mov eax,dword ptr ds:[B6DFC8] 00B585B5 8985 CCAEFFFF mov dword ptr ss:[ebp+FFFFAECC],eax 00B585BB 8B85 CCAEFFFF mov eax,dword ptr ss:[ebp+FFFFAECC] 00B585C1 8985 0CD8FFFF mov dword ptr ss:[ebp-27F4],eax 00B585C7 8B85 FCD7FFFF mov eax,dword ptr ss:[ebp-2804] 00B585CD 8B40 50 mov eax,dword ptr ds:[eax+50] ----------------------------------------------------------------
现在我们CTRL+S在整个区段搜索
mov edx,dword ptr ds:[ecx+C] add edx,dword ptr ds:[ecx+8] 找到下面的地址 ---------------------------------------------------------------- 00B5E1D7 8D74C1 D8 lea esi,dword ptr ds:[ecx+eax*8-28] 00B5E1DB 33C0 xor eax,eax 00B5E1DD 3BCE cmp ecx,esi 00B5E1DF 73 11 jnb short 00B5E1F2 00B5E1E1 8B51 0C mov edx,dword ptr ds:[ecx+C]〈--------找到这 00B5E1E4 0351 08 add edx,dword ptr ds:[ecx+8]〈-------在这下断 00B5E1E7 3BD0 cmp edx,eax ----------------------------------------------------------------
在上面地址下断以后,ALT+M取消内存断点,F9运行断下 继续F9,会在这多次中断,看“寄存器”窗口的ECX 00870298 ASCII ".reloc" 当出现这个的时候,再看 下面,这个时候显示的就是重定位表RVA和大小 现在我们记下来,取消断点。
1 2 下一页 |