|
【破解作者】 csjwaman
【作者邮箱】 csjwaman@sohu.com
【使用工具】 OD110Bb,LordPE,ImprotREC16F,FI30
【破解平台】 Win9x/NT/2000/XP
【软件名称】 Armadillo360标准加壳的win98记事本程序
【下载地址】 本地下载
【软件简介】 Armadillo360标准加壳的win98记事本程序
【加壳方式】 Armadillo360标准加壳
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
简单脱壳-Armadillo360标准加壳的win98记事本程序
用FI30查看为Armadillo 2.5? {glue}加壳(晕!)。首选用IsDebug 1.4插件去掉Ollydbg的调试器标志。设置忽略所有的异常选项。 载入程序后,停在:
00432999 >/$Content$nbsp; 55 PUSH EBP====>停在此处。 0043299A |. 8BEC MOV EBP,ESP 0043299C |. 6A FF PUSH -1 0043299E |. 68 502C4500 PUSH NOTEPAD.00452C50 004329A3 |. 68 80234300 PUSH NOTEPAD.00432380 ; SE handler installation 004329A8 |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0] 004329AE |. 50 PUSH EAX 004329AF |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
一、DUMP程序
ALT+M打开内存镜像:
Memory map, item 11 Address=00400000 Size=00001000 (4096.)=====>在这行下内存访问断点。 Owner=NOTEPAD 00400000 (itself) Section= Contains=PE header Type=Imag 01001002 Access=R Initial access=RWE
F9运行程序,中间会有一个提示错误的对话框,点确定后再SHIFT+F9程序断在:
004010CC 55 PUSH EBP=====>呵呵,这是什么?DUMP吧! 004010CD 8BEC MOV EBP,ESP 004010CF 83EC 44 SUB ESP,44 004010D2 56 PUSH ESI 004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] 004010D9 8BF0 MOV ESI,EAX 004010DB 8A00 MOV AL,BYTE PTR DS:[EAX] 004010DD 3C 22 CMP AL,22 004010DF 75 1B JNZ SHORT NOTEPAD.004010FC 004010E1 56 PUSH ESI 004010E2 FF15 F4644000 CALL DWORD PTR DS:[4064F4] ; USER32.CharNextA 004010E8 8BF0 MOV ESI,EAX 004010EA 8A00 MOV AL,BYTE PTR DS:[EAX] 004010EC 84C0 TEST AL,AL 004010EE 74 04 JE SHORT NOTEPAD.004010F4 004010F0 3C 22 CMP AL,22 004010F2 ^ 75 ED JNZ SHORT NOTEPAD.004010E1 004010F4 803E 22 CMP BYTE PTR DS:[ESI],22 004010F7 75 15 JNZ SHORT NOTEPAD.0040110E 004010F9 46 INC ESI 004010FA EB 12 JMP SHORT NOTEPAD.0040110E 004010FC 3C 20 CMP AL,20 004010FE 7E 0E JLE SHORT NOTEPAD.0040110E 00401100 56 PUSH ESI 00401101 FF15 F4644000 CALL DWORD PTR DS:[4064F4] ; USER32.CharNextA 00401107 8038 20 CMP BYTE PTR DS:[EAX],20 0040110A 8BF0 MOV ESI,EAX 0040110C ^ 7F F2 JG SHORT NOTEPAD.00401100 0040110E 803E 00 CMP BYTE PTR DS:[ESI],0
DUMP后用LordPE修改入口点为4010CC。
二、查找Magic JMP
用OD载入DUMP程序:
004010CC > 55 PUSH EBP 004010CD 8BEC MOV EBP,ESP 004010CF 83EC 44 SUB ESP,44 004010D2 56 PUSH ESI 004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4]=====>当用F7走到这里时出错,记下地址4063E4。 004010D9 8BF0 MOV ESI,EAX 004010DB 8A00 MOV AL,BYTE PTR DS:[EAX] 004010DD 3C 22 CMP AL,22 004010DF 75 1B JNZ SHORT dumped.004010FC 004010E1 56 PUSH ESI
用OD载入带壳程序,在DUMP区CTRL+G,输入4063E4,点OK,在DUMP区看到的都是00000000,看来数据还未写入。好,在4063E4处的4个字节上下硬件写入DWORD断点。F9运行程序,出现错误提示对话框,确定后SHIFT+F9。再F9一次,程序停在:
00A5181A 8B85 20ECFFFF MOV EAX,DWORD PTR SS:[EBP-13E0]=====>断在此处(不要删除断点,等下还要用)。再看看DUMP区,数据已经写入了。 00A51820 83C0 04 ADD EAX,4 00A51823 8985 20ECFFFF MOV DWORD PTR SS:[EBP-13E0],EAX 00A51829 ^ E9 36FDFFFF JMP 00A51564 00A5182E 83BD F4EAFFFF 0>CMP DWORD PTR SS:[EBP-150C],0 00A51835 0F85 8A000000 JNZ 00A518C5 00A5183B 0FB685 B0E8FFFF MOVZX EAX,BYTE PTR SS:[EBP-1750] 00A51842 85C0 TEST EAX,EAX 00A51844 74 7F JE SHORT 00A518C5 00A51846 6A 00 PUSH 0 00A51848 8B85 B4E8FFFF MOV EAX,DWORD PTR SS:[EBP-174C] 00A5184E C1E0 02 SHL EAX,2 00A51851 50 PUSH EAX
往上找Magic JMP,来到:
00A51349 FF15 C480A500 CALL DWORD PTR DS:[A580C4] ; KERNEL32.GetModuleHandleA 00A5134F 3985 BCE8FFFF CMP DWORD PTR SS:[EBP-1744],EAX 00A51355 75 0F JNZ SHORT 00A51366 00A51357 C785 B8E8FFFF 3>MOV DWORD PTR SS:[EBP-1748],0A5C530 00A51361 E9 C4000000 JMP 00A5142A 00A51366 83A5 94E6FFFF 0>AND DWORD PTR SS:[EBP-196C],0 00A5136D C785 90E6FFFF 4>MOV DWORD PTR SS:[EBP-1970],0A5CB48 00A51377 EB 1C JMP SHORT 00A51395 00A51379 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970] 00A5137F 83C0 0C ADD EAX,0C 00A51382 8985 90E6FFFF MOV DWORD PTR SS:[EBP-1970],EAX 00A51388 8B85 94E6FFFF MOV EAX,DWORD PTR SS:[EBP-196C] 00A5138E 40 INC EAX 00A5138F 8985 94E6FFFF MOV DWORD PTR SS:[EBP-196C],EAX 00A51395 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970] 00A5139B 8338 00 CMP DWORD PTR DS:[EAX],0 00A5139E 0F84 86000000 JE 00A5142A=====>这就是Magic JMP! 00A513A4 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970] 00A513AA 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8] 00A513AD 83E0 01 AND EAX,1 00A513B0 85C0 TEST EAX,EAX 00A513B2 74 25 JE SHORT 00A513D9 00A513B4 A1 9455A600 MOV EAX,DWORD PTR DS:[A65594] 00A513B9 8B0D 9455A600 MOV ECX,DWORD PTR DS:[A65594] ; NOTEPAD.0044D260 00A513BF 8B40 58 MOV EAX,DWORD PTR DS:[EAX+58] 00A513C2 3341 6C XOR EAX,DWORD PTR DS:[ECX+6C] 00A513C5 8B0D 9455A600 MOV ECX,DWORD PTR DS:[A65594] ; NOTEPAD.0044D260 00A513CB 3341 70 XOR EAX,DWORD PTR DS:[ECX+70] 00A513CE 25 80000000 AND EAX,80 00A513D3 85C0 TEST EAX,EAX 00A513D5 74 02 JE SHORT 00A513D9 00A513D7 ^ EB A0 JMP SHORT 00A51379 00A513D9 8B85 94E6FFFF MOV EAX,DWORD PTR SS:[EBP-196C] 00A513DF 8B0D E011A600 MOV ECX,DWORD PTR DS:[A611E0] 00A513E5 8B15 9455A600 MOV EDX,DWORD PTR DS:[A65594] ; NOTEPAD.0044D260 00A513EB 8B0481 MOV EAX,DWORD PTR DS:[ECX+EAX*4] 00A513EE 3342 54 XOR EAX,DWORD PTR DS:[EDX+54] 00A513F1 8B0D 9455A600 MOV ECX,DWORD PTR DS:[A65594] ; NOTEPAD.0044D260 00A513F7 3341 70 XOR EAX,DWORD PTR DS:[ECX+70] 00A513FA 8B0D 9455A600 MOV ECX,DWORD PTR DS:[A65594] ; NOTEPAD.0044D260 00A51400 3341 24 XOR EAX,DWORD PTR DS:[ECX+24] 00A51403 8B0D 9455A600 MOV ECX,DWORD PTR DS:[A65594] ; NOTEPAD.0044D260 00A51409 3341 30 XOR EAX,DWORD PTR DS:[ECX+30] 00A5140C 3985 BCE8FFFF CMP DWORD PTR SS:[EBP-1744],EAX 00A51412 75 11 JNZ SHORT 00A51425 00A51414 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970] 00A5141A 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4] 00A5141D 8985 B8E8FFFF MOV DWORD PTR SS:[EBP-1748],EAX 00A51423 EB 05 JMP SHORT 00A5142A 00A51425 ^ E9 4FFFFFFF JMP 00A51379 00A5142A 80A5 B0E8FFFF 0>AND BYTE PTR SS:[EBP-1750],0 00A51431 83BD F4EAFFFF 0>CMP DWORD PTR SS:[EBP-150C],0 00A51438 75 3F JNZ SHORT 00A51479 00A5143A A1 6C5AA600 MOV EAX,DWORD PTR DS:[A65A6C] 00A5143F 8A80 82370000 MOV AL,BYTE PTR DS:[EAX+3782] 00A51445 8885 4CD2FFFF MOV BYTE PTR SS:[EBP-2DB4],AL 00A5144B 0FB685 4CD2FFFF MOVZX EAX,BYTE PTR SS:[EBP-2DB4] 00A51452 85C0 TEST EAX,EAX 00A51454 74 23 JE SHORT 00A51479 00A51456 8B85 ACE8FFFF MOV EAX,DWORD PTR SS:[EBP-1754] 00A5145C 3B85 B8FDFFFF CMP EAX,DWORD PTR SS:[EBP-248] 00A51462 72 15 JB SHORT 00A51479 00A51464 8B85 ACE8FFFF MOV EAX,DWORD PTR SS:[EBP-1754] 00A5146A 3B85 C4FDFFFF CMP EAX,DWORD PTR SS:[EBP-23C] 00A51470 73 07 JNB SHORT 00A51479 00A51472 C685 B0E8FFFF 0>MOV BYTE PTR SS:[EBP-1750],1
记下Magic JMP的地址00A5139E。
|