SMC技术在破解WINDOWS优化大师3.2A中的运用(8千字),SMC,补丁技术 2008年06月23日 星期一 下午 09:24 SMC技术在破解WINDOWS优化大师3.2A中的运用 [声明] 我写文章的目的是为了交流技术,希望大家在转载时能保持文章的完整性。 [前言] 这是本人在看雪论坛是发表的第一篇破解教程,写的不好,请多原谅! 其实,这是我在破解WINDOWS优化大师3.2A时用到的技术,当时我并不知 道已经用ANTI-ASPACK0.2可以脱掉它,我用FI也查不到它的壳,所以我 只有手工脱壳。这个软件被脱壳后是很好破解的。所在我在这里只谈论如 何写SMC指令,没谈到如何破解它。 PART A:分析第一层压缩。 PART B:分析第二层压缩。 PART C:写SMC指令。 ======================================< PART A >============================================ 1.分析第一层压缩以及关键性的跳转。 2.确定要修改的指令。 下面的这段指令要注意一下。 0167:0058053B A3271A11A9 MOV [A9111A27],EAX 0167:00580540 91 XCHG EAX,ECX 0167:00580541 B0E7 MOV AL,E7 0167:00580543 6742 INC EDX 0167:00580545 FF6641 JMP [ESI 41] 0167:00580548 102A ADC [EDX],CH 0167:0058054A DE33 FIDIV WORD PTR [EBX] 0167:0058054C 27 DAA 0167:0058054D EA056970ED6F80 JMP 806F:ED706905 0167:00580554 EE OUT DX,AL 0167:00580555 47 INC EDI 0167:00580556 E9E0FEFFFF JMP 0058043B ;这里我们要处理一下,改成JMP 584005 ;为何要改成584005呢?请参照 0167:0058055B 338CA456D9D422 XOR ECX,[ESP 22D4D956] 0167:00580562 2C3F SUB AL,3F 0167:00580564 1F POP DS 我们先来看一下在[58043B]里到底是什么指令。以下是[58042A--58043C]的指令片段: 0167:0058042A FF9504404400 CALL [EBP 00444004] 0167:00580430 8B2C24 MOV EBP,[ESP] 0167:00580433 81ED3C394400 SUB EBP,0044393C 0167:00580439 C3 RET 0167:0058043A 00E9 ADD CL,CH ;当程序运行到[580556]时, ;这里将变成JMP 580007 0167:0058043C C7FBFFFF0000 MOV EBX,0000FFFF 经过跟踪,我发现[58043A]的指令会被前面的JMP 58043B截成JMP 580007,这里可算是花指令技术了。 那[580007]里又是什么指令呢?跟进去瞧瞧。 0167:00580005 0000 ADD [EAX],AL 0167:00580007 E824040000 CALL 00580430 ;F8进入,到这里程序就快要解完第一层压缩了。 0167:0058000C EB00 JMP 0058000E 0167:0058000E BB30394400 MOV EBX,00443930 0167:00580013 03DD ADD EBX,EBP 0167:00580015 2B9DD03F4400 SUB EBX,[EBP 00443FD0] 0167:0058001B 83BDFC49440000 CMP DWORD PTR [EBP 004449FC],00 0167:00580022 899DFC494400 MOV [EBP 004449FC],EBX 0167:00580028 0F8566030000 JNZ 00580394 进入CALL 580430后,我们将来到这里。 0167:00580430 8B2C24 MOV EBP,[ESP] 0167:00580433 81ED3C394400 SUB EBP,0044393C 0167:00580439 C3 RET ;这里是第一层壳的出口。 ======================================< PART B >============================================ 1.分析第二层压缩以及关键性的跳转。 2.寻找主程序的入口地址。 0167:00580394 8B85AD394400 MOV EAX,[EBP 004439AD] 0167:0058039A 50 PUSH EAX 0167:0058039B 0385FC494400 ADD EAX,[EBP 004449FC] 0167:005803A1 59 POP ECX 0167:005803A2 0BC9 OR ECX,ECX 0167:005803A4 8985E63C4400 MOV [EBP 00443CE6],EAX 0167:005803AA 61 POPAD 0167:005803AB 7508 JNZ 005803B5 0167:005803AD B801000000 MOV EAX,00000001 0167:005803B2 C20C00 RET 000C 0167:005803B5 6800000000 PUSH 00000000 ;这里是第二层的出口, ;程序运行到这里的PUSH后会有一个值, 0167:005803BA C3 RET ;这个值正是主程序的入口, ;也是我们脱壳的关键。 0167:005803BB 8B85004A4400 MOV EAX,[EBP 00444A00] 0167:005803C1 8D8D2A4A4400 LEA ECX,[EBP 00444A2A] 0167:005803C7 51 PUSH ECX 好了,ASPACK已经完会被解压了。我们可以在这里手工脱壳,脱壳后生成的文件可以被W32DASM反汇编。 ======================================< PART C >============================================ 我们已经彻底搞清楚了ASPACK的解压过程,下面就要想办法写SMC指令了。我们可以用TOPO在程序前加上 150个90或00,以供我们写指令时用。我的思路是这样的:首先我们要在第一层压缩结束指令生成后的某 个地址写入JMP XXXXX,XXXXX是SMC指令相应部分所在的地址(注:因为有两层压缩,所以我的SMC指令要 分成好几个部分。)然后要在第二层压缩结束指令生成后的某个地址也写入JMP XXXXX,最后根据情况用 RET或JMP回到主程序的入口地址。(其实中间还有些细节,我会在后面的指令中一一分析的。) [580000]是我们用TOPO加入空间后的新地址,我们要在这里写入SMC指令。 0167:00584000 JMP 00580000 ;[580000]是ASPACK的入口地址,先让它 ;运行,过会再改。 0167:00584005 MOV DWORD PTR [00580439],003BDDE9 ;在第一层压缩结尾 0167:0058400F MOV BYTE PTR [0058043D],00 ;处写入JMP 0058401B 0167:00584016 JMP 00580007 0167:0058401B MOV DWORD PTR [005803BA],003C88E9 ;在第二层压缩结尾 0167:00584025 MOV BYTE PTR [005803BE],00 ;处写入JMP 00584047 0167:0058402C MOV WORD PTR [005803BF],9090 0167:00584035 MOV DWORD PTR [00580439],C7E900C3 ;这里是还原第一层压 结尾处的指令,因 0167:0058403F MOV BYTE PTR [0058043D],FB ;为;在第二层解压缩时要用到这些代码, 0167:00584046 RET ;若不还原就会死机。 0167:00584047 MOV WORD PTR [004F84BB],01B0 ;下面的指令就是向完成解压后的主程序里 0167:00584050 MOV BYTE PTR [004F84BD],EB ;写破解代码,写完后用RET退出第二层压缩。 0167:00584057 MOV WORD PTR [004F84EF],01B0 ;继续运行主程序。 0167:00584060 MOV BYTE PTR [004F84F1],EB 0167:00584067 MOV BYTE PTR [004F85FF],EB 0167:0058406E MOV WORD PTR [0050435A],00B0 0167:00584077 MOV BYTE PTR [0050435C],EB 0167:0058407E RET [后记] 我脱壳不太好,记得我以前脱SafeCln3.02时老是出错,在WIN98第二版上脱的文件在第一版上不能用, 我怀疑是IMPORT表定位有错。哪位大哥脱壳比较好,教教小弟吧。我的QQ:17525661 祝各位在新的一年里身体健康! 工作顺利! 万事如意! |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 15:19 , Processed in 0.174733 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.