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呢?请参照<PART C>
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
祝各位在新的一年里身体健康! 工作顺利! 万事如意!
gfh[CCG]
2001年1月19日
- 标 题:SMC技术在破解WINDOWS优化大师3.2A中的运用。 (8千字)
- 作 者:gfh[CCG]
- 时 间:2001-1-20 0:33:23
- 链 接:http://bbs.pediy.com