ini文件类型验证带壳破解一例
by:kernel2008->【i386 information security team of china】<-qq:kernel2008@qq.com【调试平台】深度优化windows xp sp2
【目标程序】进程执法官2.50【用到工具】OD,Peid
【脱壳目的】偶菜菜呀就是想啊想玩玩,飞呀飞,一切都是为了学习^_^!
【文件下载】http:// www.firebug.org.cn/download.asp
软件简单介绍:
进程执法官是一款强悍的手工杀毒与系统监控软件。它通过对应用程序、普通进程、网络进程、隐藏进程、关键系统目录、启动项、系统用户、共享目录等系统关键资源的实时监视与查杀,确保系统的安全,让各类非法进程无所遁形。“进程执法官”将帮你简单的解决所有的进程问题,无论你是新手还是老手,都可以通过执法官提供的大量进程资料,准确定位非法进程,确保系统安全,弥补防火墙和杀毒软件的不足。
支持平台:Win2000/XP/2003 任何版本
最新版本:V2.0个人正式版
官方主页:http:// www.firebug.org.cn /
官方论坛:http:// www.firebug.org.cn/forum/
官方下载:http://
使用Peid查壳显示为:ASPack 2.12 -> Alexey Solodovnikov
运行目标程序程序,输入注册信息,提示再次点击注册看看是否注册,好再次来点击注册,没有注册的。
用户名:i386 information security team of china
注册码:123456
留心的朋友就会发现该目标程序目录下会自动生成有一个INI文件,使用记事本看看里面的信息,而且果不其然的里面有我们刚才填入的注册信息,好,破解思路来了,那么,下面开始追码吧。载入目标程序于OD中,在命令行下输入bp GetPrivateProfileStringA,F9运行程序(偶这里使用键盘了),大概F9运行66次就到达返回时机了,注意看堆栈窗口出现如下信息即是了:
0012D30C73DCA45F /CALL 到 GetPrivateProfileStringA 来自 mfc42.73DCA459
0012D3100047416C |Section = "RigisterSettings"
0012D31400474180 |Key = "user"
0012D31873E0E564 |Default = ""
0012D31C0012D350 |ReturnBuffer = 0012D350
0012D32000001000 |BufSize = 1000 (4096.)
0012D32400DB2E98 \IniFileName = "C:\Documents and Settings\Administrator\桌面\jczfg\进程
执法官2.50压缩包\PJudger.ini"
好,到此ALT+F9返回,F8往下单步,又回到断点处,再ALT+F9返回,代码及其分析如下:
0041CB2D50 PUSH EAX
0041CB2E8D4C24 14 LEA ECX,DWORD PTR SS:
0041CB32C64424 38 06MOV BYTE PTR SS:,6
0041CB37E8 58910300 CALL PJudger.00455C94
0041CB3C8D4C24 20 LEA ECX,DWORD PTR SS:
0041CB40885C24 34 MOV BYTE PTR SS:,BL
0041CB44E8 45910300 CALL PJudger.00455C8E
0041CB498B4424 18 MOV EAX,DWORD PTR SS: //取机器码赋值给EAX寄存器
0041CB4D8B4C24 14 MOV ECX,DWORD PTR SS: //取用户名赋值给ECX寄存器
0041CB5150 PUSH EAX
0041CB5251 PUSH ECX
0041CB538D5424 14 LEA EDX,DWORD PTR SS:
0041CB5768 545F4700 PUSH PJudger.00475F54
0041CB5C52 PUSH EDX
0041CB5DE8 D6920300 CALL PJudger.00455E38
0041CB6283C4 10 ADD ESP,10
0041CB658D4C24 1C LEA ECX,DWORD PTR SS:
0041CB69E8 52540100 CALL PJudger.00431FC0
0041CB6E6A 0C PUSH 0C
0041CB70C64424 38 07MOV BYTE PTR SS:,7
0041CB756A 00 PUSH 0
0041CB778D4424 2C LEA EAX,DWORD PTR SS:
0041CB7B50 PUSH EAX
0041CB7C51 PUSH ECX
0041CB7D8D5424 1C LEA EDX,DWORD PTR SS:
0041CB818BCC MOV ECX,ESP
0041CB83896424 38 MOV DWORD PTR SS:,ESP
0041CB8752 PUSH EDX
0041CB88E8 A5920300 CALL PJudger.00455E32
0041CB8D8D4424 38 LEA EAX,DWORD PTR SS:
0041CB9150 PUSH EAX
0041CB92E8 69540100 CALL PJudger.00432000
0041CB9783C4 08 ADD ESP,8
0041CB9A8BC8 MOV ECX,EAX
0041CB9CC64424 40 08MOV BYTE PTR SS:,8
0041CBA1E8 C8920300 CALL PJudger.00455E6E
0041CBA68BF0 MOV ESI,EAX
0041CBA86A 0C PUSH 0C
0041CBAA8D4C24 24 LEA ECX,DWORD PTR SS:
0041CBAE6A 00 PUSH 0
0041CBB051 PUSH ECX
0041CBB18D4C24 1C LEA ECX,DWORD PTR SS:
0041CBB5C64424 40 09MOV BYTE PTR SS:,9
0041CBBAE8 AF920300 CALL PJudger.00455E6E
0041CBBF8B36 MOV ESI,DWORD PTR DS: //×注意×开始出现注册码了
0041CBC1 > 8B00 MOV EAX,DWORD PTR DS: 把假的注册码赋值给了EAX
0041CBC356 PUSH ESI //此下的几句都可以做注册机,在ESI中(偶在此选择)
0041CBC450 PUSH EAX
0041CBC5FF15 34FC4500CALL DWORD PTR DS:
0041CBCB83C4 08 ADD ESP,8
0041CBCE8D4C24 20 LEA ECX,DWORD PTR SS:
0041CBD285C0 TEST EAX,EAX
0041CBD40F944424 0B SETE BYTE PTR SS:
0041CBD9E8 B0900300 CALL PJudger.00455C8E
0041CBDE8D4C24 24 LEA ECX,DWORD PTR SS:
0041CBE2C64424 34 08MOV BYTE PTR SS:,8
0041CBE7E8 A2900300 CALL PJudger.00455C8E
0041CBEC8D4C24 28 LEA ECX,DWORD PTR SS:
0041CBF0C64424 34 07MOV BYTE PTR SS:,7
0041CBF5E8 94900300 CALL PJudger.00455C8E
0041CBFA8A4424 0B MOV AL,BYTE PTR SS:
0041CBFE885C24 34 MOV BYTE PTR SS:,BL
0041CC0284C0 TEST AL,AL
0041CC048D4C24 1C LEA ECX,DWORD PTR SS:
0041CC0874 56 JE SHORT PJudger.0041CC60//很可疑的爆破点,但偶没深入了!
0041CC0AE8 E1530100 CALL PJudger.00431FF0
0041CC0F8D4C24 0C LEA ECX,DWORD PTR SS:
0041CC13C64424 34 02MOV BYTE PTR SS:,2
0041CC18E8 71900300 CALL PJudger.00455C8E
0041CC1D8D4C24 10 LEA ECX,DWORD PTR SS:
0041CC21C64424 34 01MOV BYTE PTR SS:,1
0041CC26E8 63900300 CALL PJudger.00455C8E
0041CC2B8D4C24 14 LEA ECX,DWORD PTR SS:
0041CC2FC64424 34 00MOV BYTE PTR SS:,0
0041CC34E8 55900300 CALL PJudger.00455C8E
0041CC398D4C24 18 LEA ECX,DWORD PTR SS:
0041CC3DC74424 34 FFFFF>MOV DWORD PTR SS:,-1
0041CC45E8 44900300 CALL PJudger.00455C8E
0041CC4AB8 01000000 MOV EAX,1
0041CC4F8B4C24 2C MOV ECX,DWORD PTR SS:
0041CC5364:890D 0000000>MOV DWORD PTR FS:,ECX
0041CC5A5E POP ESI
0041CC5B5B POP EBX
0041CC5C83C4 30 ADD ESP,30
0041CC5FC3 RETN
追码结果如下--->
用户名:i386 information security team of china
机器码:WDC WD800BB-00JHC0
注册码:1A794D52470C
做注册机偶选择如下(好几处,大家看着喜欢选择做):
寄存方式:ESI
中断地址:0041CBC356
字节长度:1
第一字节:56
【总结如下】注册信息保存在INI文件,有点类似ini文件类型重启验证注册,但又有点不一样,关键是下好断点,找到返回时机(这点很重要)。当然认真地分析代码也是关键!
屏幕录像下载:
http://www.namipan.com/d/ini%e6%96%87%e4%bb%b6%e7%b1%bb%e5%9e%8b%e9%aa%8c%e8%af%81%e5%b8%
a6%e5%a3%b3%e7%a0%b4%e8%a7%a3%e4%b8%80%e4%be%
8b.zip/d0baae20d222dc4913bdc85ccf2b6ed036b1db2f6dffc900 我刚开始用的也是INI断点....后来发现这浪费太多时间了....直接在第二次读取INI的地方(字符串中就有)下断就行...然后回溯.....注册码是明码.....很快 支持下楼主,继续加油啊!!!!!
页:
[1]