首页
社区
课程
招聘
[原创]易语言变态反调试自校验多重验证
发表于: 2007-4-7 17:10 28193

[原创]易语言变态反调试自校验多重验证

2007-4-7 17:10
28193
收藏
免费 0
支持
分享
最新回复 (39)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
学习! !!!
2007-9-8 21:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
usa
27
支持并学习!
2007-9-13 02:04
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
28
好像很多E语言的antidebug模块都是我以前写的
2007-9-13 09:47
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
29
原来罪魁祸首是你`
2007-9-13 18:02
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
30
版权费没收的话去要过来,够个打酒钱了
2007-9-13 18:55
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
虽然易语言的宣传很好,但是我也不太喜欢用
2007-9-13 23:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
向软件作者致敬!
向楼主致敬!
2007-9-18 01:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
菜鸟学习啦
在浩浩看看那
2007-9-19 16:21
0
雪    币: 215
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
哈。。。貌似易论坛以前的玩破解比较强的是几位退隐的的前辈。。。老大你是哪个呢?
我就知道mr_x和林子深,其他人都忘了。
2007-12-12 00:28
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
佩服楼主的毅力,向楼主学习!
2007-12-12 07:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
值得学习!!!!
2007-12-12 10:45
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
既然这样的话还不如内存补丁
2007-12-12 11:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
学习学习,谢谢分享。
2007-12-13 20:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
学习!谢谢分享
2007-12-16 14:44
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
40
00484FC1 >  68 08384000     push    00403808                         ; software\foxzf\code
00484FC6 >  68 01030080     push    80000301                         ; 整数型(基本数据类型)
00484FCB    6A 00           push    0
00484FCD    68 03000000     push    3
00484FD2    68 03000000     push    3
00484FD7 >  BB 98060000     mov     ebx, 698                         ; 取文本注册项(系统核心支持库)
00484FDC >  E8 18FC0000     call    00494BF9                         ; 调用核心支持库命令(调用3号服务)
00484FE1    83C4 28         add     esp, 28                          ; 取出我们输入的注册码
00484FE4    8945 FC         mov     dword ptr [ebp-4], eax
00484FE7    8B45 FC         mov     eax, dword ptr [ebp-4]
00484FEA    50              push    eax
00484FEB    8B1D 0C21A700   mov     ebx, dword ptr [A7210C]
00484FF1    85DB            test    ebx, ebx
00484FF3    74 09           je      short 00484FFE
00484FF5    53              push    ebx
00484FF6 >  E8 ECFB0000     call    00494BE7                         ; 销毁从堆上分配到的内存(调用8号服务)
00484FFB    83C4 04         add     esp, 4
00484FFE    58              pop     eax
00484FFF    A3 0C21A700     mov     dword ptr [A7210C], eax
00485004    6A 00           push    0
00485006    6A 00           push    0
00485008    6A 00           push    0
0048500A >  68 04000080     push    80000004                         ; 文本型(基本数据类型)
0048500F    6A 00           push    0
00485011 >  68 1C384000     push    0040381C                         ; software\foxzf\name
00485016 >  68 01030080     push    80000301                         ; 整数型(基本数据类型)
0048501B    6A 00           push    0
0048501D    68 03000000     push    3
00485022    68 03000000     push    3
00485027 >  BB 98060000     mov     ebx, 698                         ; 取文本注册项(系统核心支持库)
0048502C >  E8 C8FB0000     call    00494BF9                         ; 调用核心支持库命令(调用3号服务)
00485031    83C4 28         add     esp, 28                          ; 取出用户名
00485034    8945 FC         mov     dword ptr [ebp-4], eax
00485037    8B45 FC         mov     eax, dword ptr [ebp-4]
0048503A    50              push    eax
0048503B    8B1D 1021A700   mov     ebx, dword ptr [A72110]
00485041    85DB            test    ebx, ebx
00485043    74 09           je      short 0048504E
00485045    53              push    ebx
00485046 >  E8 9CFB0000     call    00494BE7                         ; 销毁从堆上分配到的内存(调用8号服务)
0048504B    83C4 04         add     esp, 4
0048504E    58              pop     eax
0048504F    A3 1021A700     mov     dword ptr [A72110], eax
00485054 >  68 04000080     push    80000004                         ; 文本型(基本数据类型)
00485059    6A 00           push    0
0048505B    A1 1421A700     mov     eax, dword ptr [A72114]          ; 这个是我的机器码。就是待验证的字符串
00485060    85C0            test    eax, eax
00485062    75 05           jnz     short 00485069
00485064 >  B8 4B364000     mov     eax, 0040364B                    ; (常量)
00485069    50              push    eax
0048506A    68 01000000     push    1
0048506F >  BB 98010000     mov     ebx, 198                         ; 到字节集(系统核心支持库)
00485074 >  E8 80FB0000     call    00494BF9                         ; 调用核心支持库命令(调用3号服务)
00485079    83C4 10         add     esp, 10
0048507C    8945 FC         mov     dword ptr [ebp-4], eax
0048507F    E8 EC000000     call    00485170                         ; 这里面看看
00485084    8945 F8         mov     dword ptr [ebp-8], eax           ; 所以这里就得到DF73
00485087    E8 FF010000     call    0048528B                         ; 公钥
0048508C    8945 F4         mov     dword ptr [ebp-C], eax
0048508F >  68 04000080     push    80000004                         ; 文本型(基本数据类型)
00485094    6A 00           push    0
00485096    8B45 F4         mov     eax, dword ptr [ebp-C]
00485099    85C0            test    eax, eax
0048509B    75 05           jnz     short 004850A2
0048509D >  B8 4B364000     mov     eax, 0040364B                    ; (常量)
004850A2    50              push    eax
004850A3 >  68 04000080     push    80000004                         ; 文本型(基本数据类型)
004850A8    6A 00           push    0
004850AA    8B45 F8         mov     eax, dword ptr [ebp-8]
004850AD    85C0            test    eax, eax
004850AF    75 05           jnz     short 004850B6
004850B1 >  B8 4B364000     mov     eax, 0040364B                    ; (常量)
004850B6    50              push    eax
004850B7 >  68 04000080     push    80000004                         ; 文本型(基本数据类型)
004850BC    6A 00           push    0
004850BE    A1 0C21A700     mov     eax, dword ptr [A7210C]          ; 这里是数字签名后的结果,如果这里是真的注册码的话就注册成功
004850C3    85C0            test    eax, eax
004850C5    75 05           jnz     short 004850CC
004850C7 >  B8 4B364000     mov     eax, 0040364B                    ; (常量)
004850CC    50              push    eax
004850CD >  68 05000080     push    80000005                         ; 字节集(基本数据类型)
004850D2    6A 00           push    0
004850D4    8B45 FC         mov     eax, dword ptr [ebp-4]
004850D7    85C0            test    eax, eax
004850D9    75 05           jnz     short 004850E0
004850DB >  B8 52364000     mov     eax, 00403652                    ; (常量)
004850E0    50              push    eax
004850E1    68 04000000     push    4
004850E6 >  BB 18000000     mov     ebx, 18                          ; 签名验证(数据操作支持库一)
004850EB    B8 06000000     mov     eax, 6
004850F0 >  E8 F8FA0000     call    00494BED                         ; 调用其他支持库命令(调用2号服务)

我们在堆栈窗口可以看到:如下

0012FC84   00000000
0012FC88   80000005
0012FC8C   00211D80  ASCII "289704427"
0012FC90   00000000
0012FC94   80000004
0012FC98   00211DC0  ASCII "DF73"
0012FC9C   00000000
0012FCA0   80000004
0012FCA4   00403835  ASCII "AA9B7177A9A16CEED291B5B775019CF9FB797E676B2A314888110516ED98BA1DB2E4FAA205EB026DE94E607CFCB4194A4F4DF62C18932BAEB393B168AC4AABD3763B2512789DA3178D0BF2F36BCCF7C36A312A8458B17ACD48C45CE3D6607808C2BC331AA96F9C3D71B6EDE5B6F0231FC17A8B98E936B"...
0012FCA8   00000000

一个公钥,一个公共模数,就是
签名验证 (到字节集 (我们输入的假码), 数字签名的结果, “DF73”, “AA9B7177A9A16CEED291B5B775019CF9FB797E676B2A314888110516ED98BA1DB2E4FAA205EB026DE94E607CFCB4194A4F4DF62C18932BAEB393B168AC4AABD3763B2512789DA3178D0BF2F36BCCF7C36A312A8458B17ACD48C45CE3D6607808C2BC331AA96F9C3D71B6EDE5B6F0231FC17A8B98E936BE8F6803DFCA377458A9”)

如果能知道作者的私钥就OK的了。不过因为是1024位的,所以比较难搞。
对了,那个自交验我改了两个跳转,中间还有个内存异常之类的。不研究了。

如果这个软件加个花指令就更好玩了。(*^__^*) 嘻嘻……
2007-12-19 10:08
0
游客
登录 | 注册 方可回帖
返回