|
破文作者:HBQJXHW 破解工具:PEID,OD,LordPE,ImportREC 破解平台:Winxp-sp2 软件名称:ABC Amber Excel Converter 2.05 多国语言 软件大小:1389KB 原版下载:http://www.onlinedown.net/soft/28806.htm 软件简介:ABC Amber Excel Converter是一个可以帮助你快速方便的将XLS文件 (MS Excel)很多格式(DBF, CSV, XML, PDF, HTML, CHM,RTF, HLP, DOC等),方便你保存收藏,程序内置了对近50种语言的支持,其中包括简体中文和繁体中文! 破解声明:我是一只小菜鸟,偶得一点心得,愿与大家分享:),参照了fly、lchhome 、weiyi75[Dfcg]等等。在此谢谢了。 第一步:用PEID载入软件为ASProtect 1.2 / 1.2c-> Alexey Solodovnikov [Overlay] 第二步:OD不忽略内存访问异常,其余全忽略,隐藏OD,载入程序: 00401000 > 68 01F06F00 PUSH abcexcel.006FF001 ;停在此处 00401005 C3 RETN 00401006 A2 8034479C MOV BYTE PTR DS:[9C473480],AL 0040100B E7 9E OUT 9E,EAX ; I/O 命令 0040100D 49 DEC ECX 0040100E 3C 90 CMP AL,90 按Shift+F9运行、第一次停在这里。 010C009D 3100 XOR DWORD PTR DS:[EAX],EAX ;异常在这里 010C009F EB 01 JMP SHORT 010C00A2 010C00A1 68 648F0500 PUSH 58F64 010C00A6 0000 ADD BYTE PTR DS:[EAX],AL 继续按Shift+F9运行,注意观察堆栈区 我按了十七次,看堆栈区 0012D738 0012D740 指向下一个 SEH 记录的指针 0012D73C 010C0217 SE处理程序 0012D740 0012FFE0 指向下一个 SEH 记录的指针 0012D744 010C0A6F SE处理程序 0012D748 0012FF90 0012D74C 010B0000 0012D750 01090000 0012D754 010C0038 0012D758 00000000 0012D75C 010D737C ASCII "Aw8xPQBAGNw=" ;出现硬盘指纹 继续按Shift+F9运行一次 ,再看堆栈区 0012D738 0012D740 指向下一个 SEH 记录的指针 0012D73C 010C09E2 SE处理程序 0012D740 0012FFE0 指向下一个 SEH 记录的指针 0012D744 010C0A6F SE处理程序 0012D748 0012FF90 0012D74C 010B0000 0012D750 01090000 0012D754 010C0038 0012D758 00000000 0012D75C 010D73D8 ASCII "SOFTWARE\ProcessText Group\Excel Converter"硬盘指纹消失 0012D760 00000000 此时注意了: 010C0A2B 3100 XOR DWORD PTR DS:[EAX],EAX ;异常停在此处 010C0A2D EB 01 JMP SHORT 010C0A30 010C0A2F 68 648F0500 PUSH 58F64 010C0A34 0000 ADD BYTE PTR DS:[EAX],AL 010C0A36 00EB ADD BL,CH 010C0A38 02E8 ADD CH,AL 010C0A3A 0158 33 ADD DWORD PTR DS:[EAX+33],EBX 010C0A3D C05A 59 59 RCR BYTE PTR DS:[EDX+59],59 ; 移位常量超出 1..31 的范围 010C0A41 64:8910 MOV DWORD PTR FS:[EAX],EDX 010C0A44 68 760A0C01 PUSH 10C0A76 010C0A49 8D85 C8D7FFFF LEA EAX,DWORD PTR SS:[EBP-2838] 010C0A4F BA 02000000 MOV EDX,2 010C0A54 E8 5727FFFF CALL 010B31B0 010C0A59 8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38] 010C0A5C E8 2F27FFFF CALL 010B3190 010C0A61 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30] 010C0A64 BA 02000000 MOV EDX,2 010C0A69 E8 4227FFFF CALL 010B31B0 010C0A6E C3 RETN 010C0A6F ^ E9 7423FFFF JMP 010B2DE8 010C0A74 ^ EB D3 JMP SHORT 010C0A49 010C0A76 5F POP EDI 010C0A77 5E POP ESI 010C0A78 5B POP EBX 010C0A79 8BE5 MOV ESP,EBP 010C0A7B 5D POP EBP 010C0A7C C3 RETN 在此下断,Shift+F9运行,中断了,F7返回010BDFB0 010BDFB0 68 952D21FD PUSH FD212D95 ;返回在此 010BDFB5 68 680F0000 PUSH 0F68 010BDFBA 68 44D00000 PUSH 0D044 010BDFBF 68 00600100 PUSH 16000 010BDFC4 FF35 14300C01 PUSH DWORD PTR DS:[10C3014] 010BDFCA E8 71E8FFFF CALL 010BC840 010BDFCF 310424 XOR DWORD PTR SS:[ESP],EAX 010BDFD2 8B05 14300C01 MOV EAX,DWORD PTR DS:[10C3014] 010BDFD8 010424 ADD DWORD PTR SS:[ESP],EAX 010BDFDB C3 RETN 010BDFDC C3 RETN AIT+M,找到00401000句,按F2下断 内存映射, 条目 23 地址=00401000 大小=0025D000 (2478080.) 属主=abcexcel 00400000 区段= 包含=代码 类型=Imag 01001002 访问=R 初始访问=RWE Shift+f9运行三次,来到OEP处 0065DBC4 55 PUSH EBP 来到此处,为OEP 0065DBC5 8BEC MOV EBP,ESP 0065DBC7 81C4 E8FEFFFF ADD ESP,-118 0065DBCD 53 PUSH EBX 0065DBCE 56 PUSH ESI 0065DBCF 33C0 XOR EAX,EAX 0065DBD1 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX 0065DBD4 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX 0065DBD7 8945 EC MOV DWORD PTR SS:[EBP-14],EAX 0065DBDA B8 4CD46500 MOV EAX,abcexcel.0065D44C 0065DBDF E8 54A6DAFF CALL abcexcel.00408238 0065DBE4 33C0 XOR EAX,EAX 0065DBE6 55 PUSH EBP 0065DBE7 68 AEDC6500 PUSH abcexcel.0065DCAE 0065DBEC 64:FF30 PUSH DWORD PTR FS:[EAX] 0065DBEF 64:8920 MOV DWORD PTR FS:[EAX],ESP 0065DBF2 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 0065DBF5 33C0 XOR EAX,EAX 0065DBF7 E8 1C50DAFF CALL abcexcel.00402C18 0065DBFC 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] 0065DBFF 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10] 0065DC02 BA C4DC6500 MOV EDX,abcexcel.0065DCC4 ; ASCII ".INI" 0065DC07 E8 B4D2DAFF CALL abcexcel.0040AEC0 0065DC0C 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] 0065DC0F B2 01 MOV DL,1 0065DC11 A1 7C024600 MOV EAX,DWORD PTR DS:[46027C] 0065DC16 E8 0927E0FF CALL abcexcel.00460324 0065DC1B 8BD8 MOV EBX,EAX 0065DC1D 6A 00 PUSH 0 0065DC1F B9 D4DC6500 MOV ECX,abcexcel.0065DCD4 ; ASCII "MultipleInstances" 0065DC24 BA F0DC6500 MOV EDX,abcexcel.0065DCF0 ; ASCII "Application" 0065DC29 8BC3 MOV EAX,EBX 0065DC2B 8B30 MOV ESI,DWORD PTR DS:[EAX] 0065DC2D FF56 10 CALL DWORD PTR DS:[ESI+10] 0065DC30 8B15 EC826600 MOV EDX,DWORD PTR DS:[6682EC] ; abcexcel.0066A681 0065DC36 8802 MOV BYTE PTR DS:[EDX],AL 0065DC38 8BC3 MOV EAX,EBX 0065DC3A E8 2957DAFF CALL abcexcel.00403368 0065DC3F A1 EC826600 MOV EAX,DWORD PTR DS:[6682EC] 0065DC44 8038 00 CMP BYTE PTR DS:[EAX],0 0065DC47 75 2C JNZ SHORT abcexcel.0065DC75 0065DC49 8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118] 0065DC4F A1 ECCD6400 MOV EAX,DWORD PTR DS:[64CDEC] 0065DC54 E8 5756DAFF CALL abcexcel.004032B0 0065DC59 8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118] 0065DC5F 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0065DC62 E8 6967DAFF CALL abcexcel.004043D0 0065DC67 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] 0065DC6A 33D2 XOR EDX,EDX 0065DC6C E8 8B22E0FF CALL abcexcel.0045FEFC 0065DC71 84C0 TEST AL,AL 0065DC73 75 1E JNZ SHORT abcexcel.0065DC93 0065DC75 A1 30856600 MOV EAX,DWORD PTR DS:[668530] 0065DC7A 8B00 MOV EAX,DWORD PTR DS:[EAX] 0065DC7C E8 9BA4DFFF CALL abcexcel.0045811C 0065DC81 FF15 247C6600 CALL DWORD PTR DS:[667C24] ;这个地方要注意,以后有用。 0065DC87 A1 30856600 MOV EAX,DWORD PTR DS:[668530] 0065DC8C 8B00 MOV EAX,DWORD PTR DS:[EAX] 0065DC8E E8 21A5DFFF CALL abcexcel.004581B4 0065DC93 33C0 XOR EAX,EAX 0065DC95 5A POP EDX 0065DC96 59 POP ECX 0065DC97 59 POP ECX 0065DC98 64:8910 MOV DWORD PTR FS:[EAX],EDX 0065DC9B 68 B5DC6500 PUSH abcexcel.0065DCB5 0065DCA0 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0065DCA3 BA 03000000 MOV EDX,3 0065DCA8 E8 2365DAFF CALL abcexcel.004041D0 0065DCAD C3 RETN 第三步:用OD插件DUMP它。程序不能运行,再用ImportREC 载入程序, OEP=25DBC4,点“IAT自动搜索”——“获得输入信息”, 有很多无效指针,先用“追踪等级1级”修复,再用插件ASProtect 1.22追踪,OK全部为有效指针,修复它吧! 第四步:运行修复后的程序还是不能正常运行,用OD载入修复后的程序,F9运行,出现异常,注意堆栈区: 0012FE90 0065DC87 返回到 dumped_.<模块入口点>+0C3 来自 010BC784 注意这行 0012FE94 0012FFB4 指向下一个 SEH 记录的指针 0012FE98 0065DCAE SE处理程序 0012FE9C 0012FFC0 --------------------------------------- 0065DBC4 >/$ 55 PUSH EBP 0065DBC5 |. 8BEC MOV EBP,ESP 0065DBC7 |. 81C4 E8FEFFFF ADD ESP,-118 0065DBCD |. 53 PUSH EBX 0065DBCE |. 56 PUSH ESI 0065DBCF |. 33C0 XOR EAX,EAX 0065DBD1 |. 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX 0065DBD4 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX 0065DBD7 |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX 0065DBDA |. B8 4CD46500 MOV EAX,dumped_.0065D44C 0065DBDF |. E8 54A6DAFF CALL dumped_.00408238 0065DBE4 |. 33C0 XOR EAX,EAX 0065DBE6 |. 55 PUSH EBP 0065DBE7 |. 68 AEDC6500 PUSH dumped_.0065DCAE 0065DBEC |. 64:FF30 PUSH DWORD PTR FS:[EAX] 0065DBEF |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 0065DBF2 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 0065DBF5 |. 33C0 XOR EAX,EAX 0065DBF7 |. E8 1C50DAFF CALL dumped_.00402C18 0065DBFC |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] 0065DBFF |. 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10] 0065DC02 |. BA C4DC6500 MOV EDX,dumped_.0065DCC4 ; ASCII ".INI" 0065DC07 |. E8 B4D2DAFF CALL dumped_.0040AEC0 0065DC0C |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] 0065DC0F |. B2 01 MOV DL,1 0065DC11 |. A1 7C024600 MOV EAX,DWORD PTR DS:[46027C] 0065DC16 |. E8 0927E0FF CALL dumped_.00460324 0065DC1B |. 8BD8 MOV EBX,EAX 0065DC1D |. 6A 00 PUSH 0 0065DC1F |. B9 D4DC6500 MOV ECX,dumped_.0065DCD4 ; ASCII "MultipleInstances" 0065DC24 |. BA F0DC6500 MOV EDX,dumped_.0065DCF0 ; ASCII "Application" 0065DC29 |. 8BC3 MOV EAX,EBX 0065DC2B |. 8B30 MOV ESI,DWORD PTR DS:[EAX] 0065DC2D |. FF56 10 CALL DWORD PTR DS:[ESI+10] 0065DC30 |. 8B15 EC826600 MOV EDX,DWORD PTR DS:[6682EC] ; dumped_.0066A681 0065DC36 |. 8802 MOV BYTE PTR DS:[EDX],AL 0065DC38 |. 8BC3 MOV EAX,EBX 0065DC3A |. E8 2957DAFF CALL dumped_.00403368 0065DC3F |. A1 EC826600 MOV EAX,DWORD PTR DS:[6682EC] 0065DC44 |. 8038 00 CMP BYTE PTR DS:[EAX],0 0065DC47 |. 75 2C JNZ SHORT dumped_.0065DC75 0065DC49 |. 8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118] 0065DC4F |. A1 ECCD6400 MOV EAX,DWORD PTR DS:[64CDEC] 0065DC54 |. E8 5756DAFF CALL dumped_.004032B0 0065DC59 |. 8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118] 0065DC5F |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0065DC62 |. E8 6967DAFF CALL dumped_.004043D0 0065DC67 |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] 0065DC6A |. 33D2 XOR EDX,EDX 0065DC6C |. E8 8B22E0FF CALL dumped_.0045FEFC 0065DC71 |. 84C0 TEST AL,AL 0065DC73 |. 75 1E JNZ SHORT dumped_.0065DC93 0065DC75 |> A1 30856600 MOV EAX,DWORD PTR DS:[668530] 0065DC7A |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 0065DC7C |. E8 9BA4DFFF CALL dumped_.0045811C 0065DC81 |. FF15 247C6600 CALL DWORD PTR DS:[667C24] ;这个Call出错了,在此下断。 0065DC87 |. A1 30856600 MOV EAX,DWORD PTR DS:[668530] ;<模块入口点>+0C3。 0065DC8C |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 0065DC8E |. E8 21A5DFFF CALL dumped_.004581B4 0065DC93 |> 33C0 XOR EAX,EAX 0065DC95 |. 5A POP EDX 0065DC96 |. 59 POP ECX 0065DC97 |. 59 POP ECX 0065DC98 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 0065DC9B |. 68 B5DC6500 PUSH dumped_.0065DCB5 0065DCA0 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0065DCA3 |. BA 03000000 MOV EDX,3 0065DCA8 |. E8 2365DAFF CALL dumped_.004041D0 0065DCAD \. C3 RETN ----------------------------------- OD不忽略内存访问异常,其余全忽略,隐藏OD,载入未脱壳的程序,运行到原先注意的地方。 //0065DC81 FF15 247C6600 CALL DWORD PTR DS:[667C24] ;这个地方要注意,以后有用。// 在命令行下“d 00667c24”,在数据窗口可看到 00667C24 010BC784 00667C28 0049E438 abcexcel.0049E438 00667C2C 0049E458 abcexcel.0049E458 00667C30 006634C0 abcexcel.006634C0 F7进入CALL, 010BC784 833D A8350C01 0>CMP DWORD PTR DS:[10C35A8],0 010BC78B 74 06 JE SHORT 010BC793 010BC78D FF15 A8350C01 CALL DWORD PTR DS:[10C35A8] ; abcexcel.0065D3DC 010BC793 C3 RETN 在命令行下“d 10C35A8”,在数据窗口可看到 010C35A8 0065D3DC abcexcel.0065D3DC 010C35AC 00000000 010C35B0 00000000 010C35B4 00000000 010C35B8 00000000 010C35BC 010D737C ASCII "Aw8xPQBAGNw=" 好了收工。 载入脱壳后的程序 //0065DC81 |. FF15 247C6600 CALL DWORD PTR DS:[667C24] ;这个Call出错了,在此下断。// 在命令行下“d 00667c24”,在数据窗口可看到 00667C24 010BC784 这个值要修改 ,修改为“0065D3DC” 00667C28 0049E438 dumped_.0049E438 00667C2C 0049E458 dumped_.0049E458 00667C30 006634C0 dumped_.006634C0 然后复制到可执行文件,保存! 运行,OK了! 另一种方法达到OEP 第一步:用PEID载入软件为ASProtect 1.2 / 1.2c-> Alexey Solodovnikov [Overlay]。 第二步:OD不忽略内存访问异常,其余全忽略,隐藏OD,载入程序: 00401000 > 68 01F06F00 PUSH abcexcel.006FF001 ;停在此处 00401005 C3 RETN 00401006 A2 8034479C MOV BYTE PTR DS:[9C473480],AL 0040100B E7 9E OUT 9E,EAX ; I/O 命令 0040100D 49 DEC ECX 0040100E 3C 90 CMP AL,90 按Shift+F9,21下之后程序运行。好重来一下,按Shift+F9,20下。 AIT+M,找到00401000句,按F2下断 内存映射, 条目 23 地址=00401000 大小=0025D000 (2478080.) 属主=abcexcel 00400000 区段= 包含=代码 类型=Imag 01001002 访问=R 初始访问=RWE 来到OEP处 0065DBC4 55 PUSH EBP 来到此处,为OEP 0065DBC5 8BEC MOV EBP,ESP 0065DBC7 81C4 E8FEFFFF ADD ESP,-118 0065DBCD 53 PUSH EBX 0065DBCE 56 PUSH ESI 0065DBCF 33C0 XOR EAX,EAX 0065DBD1 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX 0065DBD4 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX 0065DBD7 8945 EC MOV DWORD PTR SS:[EBP-14],EAX 第三步:用OD插件DUMP它。程序不能运行,再用ImportREC 载入程序,OEP=25DBC4,点“IAT自动搜索” ——“获得输入信息”,有很多无效指针,先用“追踪等级1级”修复,再用插件ASProtect 1.22追踪。 最后只有一个无效指针。 当前输入函数信息: 16 (十进制:22) 增加: +1 25C (十进制:604) 输入函数 (1 (十进制:1) 无效指针(s) 增加: -1 使用反汇编/十六制为有用。 看到第一个为//=kernel32.dll/0198/GetProcAddress 好了把它改为GetProcAddress。修复它吧! 余下的与上面的第四步一样哟。省略 ... ... |
|
---|