不脱壳破解 ASProtect 2.0x Registered -> Alexey Solodovnikov 加壳程序

 

不脱壳破解 ASProtect 2.0x Registered -> Alexey Solodovnikov 加壳程序

e2h-dist.exe。。

首先用 OD 载入程序。忽略出 int3 外的所有异常。。

运行它。。出现注册对话窗口。。

填入假码和注册信息。。。确定,,出现一个对话框 “invalidus code”

记住它。。暂停后,分析一下代码,搜索-》所有文本参考字符串。。

将 “invalidus code” 找到,然后来到它那里

004A04B1 |. 8D85 34FEFFFF LEA EAX,DWORD PTR SS:[EBP-1CC]

004A04B7 |. E8 A849F6FF CALL exif2htm.00404E64

004A04BC |. E8 F72FF6FF CALL exif2htm.004034B8

004A04C1 |. E8 C623F6FF CALL exif2htm.0040288C

004A04C6 |. 8D85 34FEFFFF LEA EAX,DWORD PTR SS:[EBP-1CC]

004A04CC |. E8 332AF6FF CALL exif2htm.00402F04

004A04D1 |. E8 B623F6FF CALL exif2htm.0040288C

004A04D6 |. A1 389D4A00 MOV EAX,DWORD PTR DS:[4A9D38]

004A04DB |. E8 F44FFDFF CALL exif2htm.004754D4

004A04E0 |. EB 0A JMP SHORT exif2htm.004A04EC

004A04E2 |> B8 98054A00 MOV EAX,exif2htm.004A0598 // 就是他了

ASCII"Invalidus codus."

004A04E7 |. E8 F82AF9FF CALL exif2htm.00432FE4

004A04EC |> 33C0 XOR EAX,EAX

004A04EE |. 5A POP EDX

004A04EF |. 59 POP ECX

004A04F0 |. 59 POP ECX

004A04F1 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX

004A04F4 |. 68 2C054A00 PUSH exif2htm.004A052C

 

 

。。向上找

 

004A0417 |. 5A POP EDX

004A0418 |. E8 57B1FFFF CALL exif2htm.0049B574 // 在这下断

004A041D |. 84C0 TEST AL,AL

004A041F |. 0F84 BD000000 JE exif2htm.004A04E2

004A0425 |. B8 3C054A00 MOV EAX,exif2htm.004A053C ;

ASCII "The code seems to be OK. Restart the program."

004A042A |. E8 B52BF9FF CALL exif2htm.00432FE4

004A042F |. 8B15 888D4A00 MOV EDX,DWORD PTR DS:[4A8D88] ;

exif2htm.004A9C44

004A0435 |. 8B12 MOV EDX,DWORD PTR DS:[EDX]

004A0437 |. 8D85 28FEFFFF LEA EAX,DWORD PTR SS:[EBP-1D8]

004A043D |. B9 74054A00 MOV ECX,exif2htm.004A0574 ;

ASCII "/exif2htm.key"

004A0442 |. E8 4D46F6FF CALL exif2htm.00404A94

004A0447 |. 8B95 28FEFFFF MOV EDX,DWORD PTR SS:[EBP-1D8]

004A044D |. 8D85 34FEFFFF LEA EAX,DWORD PTR SS:[EBP-1CC]

004A0453 |. E8 E429F6FF CALL exif2htm.00402E3C

004A0458 |. 8D85 34FEFFFF LEA EAX,DWORD PTR SS:[EBP-1CC]

004A045E |. E8 7527F6FF CALL exif2htm.00402BD8

004A0463 |. E8 2424F6FF CALL exif2htm.0040288C

004A0468 |. 8D95 20FEFFFF LEA EDX,DWORD PTR SS:[EBP-1E0]

用硬件执行断点保险一点。。。

断下后,跟进。。

0049B5B5 |. BA 01000000 MOV EDX,1

0049B5BA |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]

0049B5BD |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]

0049B5C2 |. 03F1 |ADD ESI,ECX

0049B5C4 |. 42 |INC EDX

0049B5C5 |. 48 |DEC EAX

0049B5C6 |.^ 75 F2 /JNZ SHORT exif2htm.0049B5BA

这是将输入的 ID 号转换成部分假码的算法。。。

0049B5DC |. E8 CBD7F6FF CALL exif2htm.00408DAC ;

产生部分假码

跟进。。

00408DAC /$ 56 PUSH ESI

00408DAD |. 89E6 MOV ESI,ESP

00408DAF |. 83EC 10 SUB ESP,10

00408DB2 |. 31C9 XOR ECX,ECX

00408DB4 |. 52 PUSH EDX

00408DB5 |. 31D2 XOR EDX,EDX

00408DB7 |. E8 A4FFFFFF CALL exif2htm.00408D60

00408DBC |. 89F2 MOV EDX,ESI

00408DBE |. 58 POP EAX

00408DBF |. E8 B4BAFFFF CALL exif2htm.00404878

00408DC4 |. 83C4 10 ADD ESP,10

00408DC7 |. 5E POP ESI

00408DC8 /. C3 RETN

得到 0012EA50 02423504 ASCII "52265"

部分假码。。。

0049B626 |. E8 7D96F6FF CALL exif2htm.00404CA8

得到从我们输入假码中抽取作为注册码的一部分。。

0012EA4C 02423504 ASCII "67890"

 

从而,在数据窗口得到

0012EA4C 02423504 ASCII "67890"

0012EA50 024226F0 ASCII "52265"

注册码也就是由他们组成的。。6789052265

F9 运行试验一下。。。

ok !!!

从他的算法来看,注册码是由我们的假码与他的算法给出的这注册码组成的。。

前五位是我们的假码,后五位是它的注册码。。。

而他的注册码有时根据我们的 ID 计算出来的,由此我们可以想想,如果我们只要

得到它计算 ID 的算法,我们就能够随意的填入我们的那部分假码,就可以组成

无数的注册码。。

那么就让我们来分析一下它吧。。。

0049B5B5 |. BA 01000000 MOV EDX,1

0049B5BA |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]

0049B5BD |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]

0049B5C2 |. 03F1 |ADD ESI,ECX

0049B5C4 |. 42 |INC EDX

0049B5C5 |. 48 |DEC EAX

0049B5C6 |.^ 75 F2 /JNZ SHORT exif2htm.0049B5BA

这是从我们的 ID 将它转化成 ASCII码 储存在 esi 中的,每读入一位,

edx 就加一,而 eax 就减一。。从这里我们就可以知道,eax 最初是用来存放我们

id 位数的,当 eax = 0 时,循环就结束。。

而程序从我们的假码产生的这注册码部分则是通过先判断我们假码位数,满足条件就继续取,否则就结束。。当然注册码它认为最小为5位的。。只要大于等于它。就

ok!! 这后它就去他们的后五位!!

最后与前面的这注册码组合,得到注册码!!!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值