|
文章作者: Winter[CZG][D.4s][BCG] 作者邮箱: spsgeyro@gmail.com 软件名称: FlashVideoStudio1.5 软件大小: 6.68 MB 下载地址: http://vip.hanzify.org/lordfox/MyHHOpus/todo.rar 加壳方式: Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks 保护方式: 注册码 使用工具: OD,PEID,IMPREC 作者声明: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! 详细过程: 很久没学习脱壳了,今日在汉化新世纪论坛逛的时候发现这个软件,遂跟着教程学脱。 由于是要汉化,但是破解文件本身又加了壳,所以先输入破解后的注册名和序列号 然后OD载入: 00829000 > 60 PUSHAD 00829001 E8 00000000 CALL FVStudio.00829006 00829006 5D POP EBP 00829007 50 PUSH EAX 00829008 51 PUSH ECX 忽略所有异常,下断BP OpenMutexA,shift+F9,来到断点处: 7C817227 > 8BFF MOV EDI,EDI 7C817229 55 PUSH EBP 7C81722A 8BEC MOV EBP,ESP 7C81722C 51 PUSH ECX 0012F770 008017B8 /CALL 到 OpenMutexA 0012F774 001F0001 |Access = 1F0001 0012F778 00000000 |Inheritable = FALSE 0012F77C 0012FDB0 \MutexName = "C64::DABECE0C5A" //记下0012FDB0这个值 ctrl+G,401000,输入如下代码: 00401000 60 PUSHAD 00401001 9C PUSHFD 00401002 68 B0FD1200 PUSH 12FDB0 ; ASCII "C64::DABECE0C5A" 00401007 33C0 XOR EAX,EAX 00401009 50 PUSH EAX 0040100A 50 PUSH EAX 0040100B E8 105A417C CALL kernel32.CreateMutexA 00401010 9D POPFD 00401011 61 POPAD 00401012 - E9 1062417C JMP kernel32.OpenMutexA 然后在401000上点击鼠标右键,选择新建OEP,然后复制数据区二进制代码: 60 9C 68 B0 FD 12 00 33 C0 50 50 E8 10 5A 41 7C 9D 61 E9 10 62 41 7C 90 继续F9,断下后取消断点,ctrl+G返回401000撤销修改, 然后下断:BP GetModuleHandleA+05(这个程序BP GetModuleHandleA似乎断下后返回不对) 011EF168 /011EF7C0 011EF16C |7C822B47 返回到 kernel32.7C822B47 来自 kernel32.GetModuleHandleA 011EF170 |00000000 011EF174 |7C822B8F 返回到 kernel32.7C822B8F 来自 kernel32.7C822B40 011EF73C /011EF858 011EF740 |4C52D4A7 返回到 msctfime.4C52D4A7 来自 kernel32.GetModuleHandleA 011EF744 |011EF748 ASCII "I:\WINDOWS\system32\ntdll.dll" 0012F710 0012F778 0012F714 008008F3 返回到 FVStudio.008008F3 来自 kernel32.GetModuleHandleA 0012F718 00000000 0012F71C 7C82B3C8 返回到 kernel32.7C82B3C8 来自 ntdll.ZwOpenMutant 001294FC /0012EC44 00129500 |01217105 返回到 01217105 来自 kernel32.GetModuleHandleA 00129504 |0122BC1C ASCII "kernel32.dll" 00129508 |0122CEC4 ASCII "VirtualAlloc" 001294FC /0012EC44 00129500 |01217122 返回到 01217122 来自 kernel32.GetModuleHandleA 00129504 |0122BC1C ASCII "kernel32.dll" 00129508 |0122CEB8 ASCII "VirtualFree" 然后shift+F9,一次中断后取消断点: 00129260 /00129500 00129264 |01205FC9 返回到 01205FC9 来自 kernel32.GetModuleHandleA 00129268 |001293B4 ASCII "kernel32.dll" alt+f9返回: 01205FC9 8B0D AC402301 MOV ECX,DWORD PTR DS:[12340AC] 01205FCF 89040E MOV DWORD PTR DS:[ESI+ECX],EAX 01205FD2 A1 AC402301 MOV EAX,DWORD PTR DS:[12340AC] 01205FD7 391C06 CMP DWORD PTR DS:[ESI+EAX],EBX 01205FDA 75 16 JNZ SHORT 01205FF2 01205FDC 8D85 B4FEFFFF LEA EAX,DWORD PTR SS:[EBP-14C] 01205FE2 50 PUSH EAX 01205FE3 FF15 BC622201 CALL DWORD PTR DS:[12262BC] ; kernel32.LoadLibraryA 01205FE9 8B0D AC402301 MOV ECX,DWORD PTR DS:[12340AC] 01205FEF 89040E MOV DWORD PTR DS:[ESI+ECX],EAX 01205FF2 A1 AC402301 MOV EAX,DWORD PTR DS:[12340AC] 01205FF7 391C06 CMP DWORD PTR DS:[ESI+EAX],EBX 01205FFA 0F84 2F010000 JE 0120612F //Magic Jump,改成JMP,然后去01206144下断,F9运行 01206000 33C9 XOR ECX,ECX 01206002 8B07 MOV EAX,DWORD PTR DS:[EDI] 01206004 3918 CMP DWORD PTR DS:[EAX],EBX 01206006 74 06 JE SHORT 0120600E 01206008 41 INC ECX 01206144 EB 03 JMP SHORT 01206149 //在这里下断点,断下以后取消断点,撤销magic jump的修改 01206146 D6 SALC 01206147 D6 SALC 然后alt+M,在401000上下内存访问断点 0121F968 8B12 MOV EDX,DWORD PTR DS:[EDX] //在这里断下,F8单步下去 0121F96A 8955 DC MOV DWORD PTR SS:[EBP-24],EDX 0121F96D 834D FC FF OR DWORD PTR SS:[EBP-4],FFFFFFFF 0121F9D9 8B50 60 MOV EDX,DWORD PTR DS:[EAX+60] 0121F9DC 3350 44 XOR EDX,DWORD PTR DS:[EAX+44] 0121F9DF 3350 1C XOR EDX,DWORD PTR DS:[EAX+1C] 0121F9E2 2BCA SUB ECX,EDX 0121F9E4 FFD1 CALL ECX ; FVStudio.004D17BF //这里F7进去,就到OEp啦 然后lordPE脱壳,IMPREC进行修复, OEP:000D17BF,自动搜索,获取输入表以后剪切无效指针,修复。 为了完美一点可以用peditor删除.text1,.adata,.data1,.pdata四个区段,然后重建可执行文件。 运行以后跳出要求注册的NAG,由于已经脱壳,只要把他跳过即可。 查找ascII,双击username,跟踪来到: 0041A236 E8 C572FEFF CALL dumped_.00401500 //F9以后断下,注意堆栈变化 当堆栈出现如下时,F8跟踪: 0012DD60 0012E658 ASCII "HDQ" 0012DD64 0012E658 ASCII "HDQ" 00419000 8BCE MOV ECX,ESI 00419002 E8 295C0000 CALL dumped_.0041EC30 00419007 E8 F484FEFF CALL dumped_.00401500 0041900C 84C0 TEST AL,AL 0041900E 6A 00 PUSH 0 00419010 6A 32 PUSH 32 00419012 74 0B JE SHORT dumped_.0041901F //这里改成JMP后启动无NAG了 00419014 8B4E 1C MOV ECX,DWORD PTR DS:[ESI+1C] 00419017 68 83000000 PUSH 83 0041901C 51 PUSH ECX 0041901D EB 09 JMP SHORT dumped_.00419028 还有点疑问需要请教诸位大侠 脱壳完成后用PEID查看仍旧显示Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks 应该如何优化? |
|
---|