以下是我所学4天 第一天所做的破文!(自称破文见笑了)
软件名称: 啊卡拉文件锁
软件大小:543KB
软件语言:简体中文
软件类别:未知
运行环境:Win9x/Me/NT/2000/XP
下载地址: http://free5.ys168.com/?lzmo123
破解级别:(菜鸟级)
破解工具:PEiD,OD
软件介绍:
是一款用于加密EXE文件的工具!
破解过程:
一、用PEiD是未知。
既然查不出来就手工脱它。
1.用OD载入
005EC7F2 > 9C PUSHFD ; 来到这里 F8一路向下
005EC7F3 60 PUSHAD
005EC7F4 E8 00000000 CALL 啊卡拉文.005EC7F9
005EC7F9 5D POP EBP
005EC7FA B8 07000000 MOV EAX,7
005EC7FF 2BE8 SUB EBP,EAX
005EC801 8DB5 5EFBFFFF LEA ESI,DWORD PTR SS:[EBP-4A2]
005EC807 8B06 MOV EAX,DWORD PTR DS:[ESI]
005EC809 83F8 00 CMP EAX,0
005EC80C 74 11 JE SHORT 啊卡拉文.005EC81F
005EC80E 8DB5 86FBFFFF LEA ESI,DWORD PTR SS:[EBP-47A]
005EC814 8B06 MOV EAX,DWORD PTR DS:[ESI]
005EC816 83F8 01 CMP EAX,1
005EC819 0F84 4B020000 JE 啊卡拉文.005ECA6A
005EC81F C706 01000000 MOV DWORD PTR DS:[ESI],1
005EC825 8BD5 MOV EDX,EBP
005EC894 /EB 16 JMP SHORT 啊卡拉文.005EC8AC ; 向下跳转不管 继续F8
005EC896 |B9 01000000 MOV ECX,1
005EC89B |033B ADD EDI,DWORD PTR DS:[EBX]
005EC89D |83C3 04 ADD EBX,4
005EC8A0 |833B 00 CMP DWORD PTR DS:[EBX],0
005EC901 /74 3F JE SHORT 啊卡拉文.005EC942
005EC903 |8A07 MOV AL,BYTE PTR DS:[EDI]
005EC905 |47 INC EDI
005EC906 |2C E8 SUB AL,0E8
005EC908 |3C 01 CMP AL,1
005EC90A ^|77 F7 JA SHORT 啊卡拉文.005EC903 ; 这里要向上跳了,
005EC90C |8B07 MOV EAX,DWORD PTR DS:[EDI] :在这里按F4运行到所选。
005EC932 2BC7 SUB EAX,EDI
005EC934 03C6 ADD EAX,ESI
005EC936 8907 MOV DWORD PTR DS:[EDI],EAX
005EC938 83C7 05 ADD EDI,5
005EC93B 80EB E8 SUB BL,0E8
005EC93E 8BC3 MOV EAX,EBX
005EC940 ^ E2 C6 LOOPD SHORT 啊卡拉文.005EC908 ; 又来了,不能往回跑!
005EC942 E8 2A010000 CALL 啊卡拉文.005ECA71 :这里按F4,运行到所选
005ECA58 03C2 ADD EAX,EDX
005ECA5A 50 PUSH EAX
005ECA5B FF95 BEFBFFFF CALL DWORD PTR SS:[EBP-442]
005ECA61 5A POP EDX
005ECA62 5B POP EBX
005ECA63 59 POP ECX
005ECA64 5E POP ESI
005ECA65 83C3 0C ADD EBX,0C
005ECA68 ^ E2 E1 LOOPD SHORT 啊卡拉文.005ECA4B ; 同样,不能回跳!
005ECA6A 61 POPAD ; F4运行到 所选。 这里已经出现PDPAD说明快要到出口了!
0040038C 55 PUSH EBP \\到达这里 个人认为这里不应该脱原因见下方。继续F8向下
0040038D 8BEC MOV EBP,ESP
0040038F 6A FF PUSH -1
00400391 68 00000000 PUSH 0
00400396 68 005F691E PUSH 1E695F00
0040039B 00A1 00000000 ADD BYTE PTR DS:[ECX],AH
004003A1 50 PUSH EAX
004003A2 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
004003A9 83EC 68 SUB ESP,68
004003AC 53 PUSH EBX
004003AD 56 PUSH ESI
004003AE 57 PUSH EDI
004003AF 58 POP EAX
004003B0 58 POP EAX
004003B1 58 POP EAX
004003B2 83C4 68 ADD ESP,68
004003B5 58 POP EAX
004003B6 67:64:A3 0000 MOV DWORD PTR FS:[0],EAX
004003BB 58 POP EAX
004003BC 58 POP EAX
004003BD 58 POP EAX
004003BE 58 POP EAX
004003BF 8BE8 MOV EBP,EAX
004003C1 - E9 36D30900 JMP 啊卡拉文.0049D6FC
004003C6 0000 ADD BYTE PTR DS:[EAX],AL
004003C8 0000 ADD BYTE PTR DS:[EAX],AL
004003CA 0000 ADD BYTE PTR DS:[EAX],AL
0049D6FC 55 DB 55 ; CHAR 'U' \\来到这里 这里应该是OEP 在这里脱下来。
0049D6FD 8B DB 8B
0049D6FE EC DB EC
0049D6FF 83 DB 83
0049D700 C4 DB C4
0049D701 F0 DB F0
0049D702 B8 DB B8
0049D703 F4D24900 DD 22222.0049D2F4
0049D707 E8 DB E8
0049D708 . 94 XCHG EAX,ESP
0049D709 . 8AF6 MOV DH,DH
0049D70B . FFA1 700C4A00 JMP DWORD PTR DS:[ECX+4A0C70]
0049D711 8B DB 8B
0049D712 00 DB 00
0049D713 BA DB BA
0049D714 60D74900 DD 22222.0049D760 ; ASCII "Akala EXE Lock"
0049D718 E8 DB E8
0049D719 DF DB DF
0049D71A DD DB DD
脱下来后 程序可以运行,无须修复!PE深入扫描为Borland Delphi 6.0 - 7.0编写。
另外 个人经验,脱壳前在OD里面是看不到后面的注释 只有运行到所在位子才能看到。
脱壳后的文件在OD里面的注释是明文的 不是隐藏的
以这个程序为例:载入OD后在
005EC7F2 > 9C PUSHFD
005EC7F3 60 PUSHAD
005EC7F4 E8 00000000 CALL 啊卡拉文.005EC7F9
005EC7F9 5D POP EBP ; 啊卡拉文.005EC7F9 \\这里的注释是隐藏的运行到这里才能看到。
脱壳后:
0049D6FC 55 DB 55 ; CHAR 'U' \\这里都是明文 没有隐藏
0049D6FD 8B DB 8B
0049D6FE EC DB EC
0049D6FF 83 DB 83
0049D700 C4 DB C4
0049D701 F0 DB F0
0049D702 B8 DB B8
0049D703 F4D24900 DD 22222.0049D2F4
0049D707 E8 DB E8
0049D708 . 94 XCHG EAX,ESP
0049D709 . 8AF6 MOV DH,DH
0049D70B . FFA1 700C4A00 JMP DWORD PTR DS:[ECX+4A0C70]
0049D711 8B DB 8B
0049D712 00 DB 00
0049D713 BA DB BA
0049D714 60D74900 DD 22222.0049D760 ; ASCII "Akala EXE Lock" \\这里都是明文 没有隐藏
0049D718 E8 DB E8
0049D719 DF DB DF
0049D71A DD DB DD
好脱完壳,下面要注册了
软件注册有提示:注意!注册码错误!
有提示就OK,
用OD载入脱壳后的文件
右键→超级字符串参考 查找:注意!注册码错误! 的入口 鼠标双击进入。
0049D0B2 . BA 40000000 MOV EDX,40
0049D0B7 . E8 80D6FCFF CALL 33333.0046A73C
0049D0BC . EB 0F JMP SHORT 33333.0049D0CD
0049D0BE > BA 10000000 MOV EDX,10 \\这里下断点
0049D0C3 . B8 F0D14900 MOV EAX,33333.0049D1F0 ; 注意!注册码错误! \\来到这里
0049D0C8 . E8 6FD6FCFF CALL 33333.0046A73C
0049D0CD > 33C0 XOR EAX,EAX
0049D0CF . 5A POP EDX
找到这里 关键跳应该在上面 那我门就在上面的一行 0049D0BE下断点F2
然后运行 F9 OD自动运行 程序,我门找到注册入口 并输入注册码 随便输。
当按下确定后OD就有反应了
在OD右下角出现 0012FC0C 00000000
0012FC10 00000000
0012FC14 00000000
0012FC18 00F06E20 ASCII "26002-16089" \\正确注册码
0012FC1C 00F14DD0 ASCII "123456" \\错误注册码
0012FC20 00F09D60 ASCII "lzmo123" \\用户名
0012FC24 00000000
0012FC28 00F089B4 ASCII "8YI"
0012FC2C 00F19F40 ASCII "123456"
0012FC30 00F0A920 ASCII "lzmo123"
明文比较注册码
结果已经出现。
用户名:lzmo123
注册码:26002-16089
这是我学习破解的第4天。这是我第一篇破解文章 漏洞百出。望前辈指点。
另:不解1“在脱壳过程中 为什么有的CALL 必须按F7 有的就不用。”
不解2“在脱壳过程中 为什么有的JMP要让他往回跳 有的者不能往回跳”
不解3“在脱壳过程中 为什么有的时候OD被关闭,这是什么原因?”
不解4“在脱壳过程中下断点有和意义,我还没弄明白。但是我没下断点 一些程序也可以脱下来”
不解5“F7与SHIFT+F7 F8与SHIFT+F8 的区别在何处”
望前辈指点上面几个问题。谢谢!
学习不能讨价还价实事求是!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!