首页
社区
课程
招聘
求助,一软件用OD中断后按F9不会运行
发表于: 2009-11-10 01:41 4947

求助,一软件用OD中断后按F9不会运行

2009-11-10 01:41
4947
第一次发贴,希望能解决
下面的代码是根据教程找到的关于注册的代码处,我试过了几次,不能爆破,好像有大家说的重启验证,爆破后随便输注册码会提示注册成功,然后确定软件就重新启动还是没有注册。如是准备用追踪注册码的方法,但由于初次接触,看了一整天了还是一头雾水,不知道下面代码的第一行是不是就是传说中的关键CALL,我试过在这下段后按F9但是程序不能启动,而是跳到另一段代码处。请达人指点一下
程序地址:ftp://61.144.195.157/
账号和密码都是123


0054E977 E8 F0F8F4FF call 0049E26C
0054E97C |. 84C0 test al, al
0054E97E 75 2C jnz short 0054E9AC
0054E980 |. 8D45 FC lea eax, dword ptr [ebp-4]
0054E983 BA 4CEA5400 mov edx, 0054EA4C ; 输入注册码不正确,请检查!
0054E988 E8 1B5BEBFF call 004044A8
0054E98D |. 6A 40 push 40
0054E98F |. 8B45 FC mov eax, dword ptr [ebp-4]
0054E992 |. E8 495FEBFF call 004048E0
0054E997 |. 8BD0 mov edx, eax
0054E999 |. B9 68EA5400 mov ecx, 0054EA68 ; 输入错误
0054E99E |. A1 C06B6200 mov eax, dword ptr [626BC0]
0054E9A3 |. 8B00 mov eax, dword ptr [eax]
0054E9A5 E8 E6CAF4FF call 0049B490
0054E9AA EB 68 jmp short 0054EA14
0054E9AC |> 68 7CEA5400 push 0054EA7C ; 注册成功!\n注册信息为:\n组织名:
0054E9B1 |. 8BB3 3C030000 mov esi, dword ptr [ebx+33C]
0054E9B7 |. FF76 48 push dword ptr [esi+48]
0054E9BA |. 68 A8EA5400 push 0054EAA8 ; \n
0054E9BF |. 68 B4EA5400 push 0054EAB4 ; 注册人:
0054E9C4 |. FF76 54 push dword ptr [esi+54]
0054E9C7 |. 68 A8EA5400 push 0054EAA8 ; \n
0054E9CC |. 68 C8EA5400 push 0054EAC8 ; 注册码:
0054E9D1 |. FF76 5C push dword ptr [esi+5C]
0054E9D4 |. 68 A8EA5400 push 0054EAA8 ; \n
0054E9D9 |. 68 DCEA5400 push 0054EADC ; 感谢您对我们的支持!请重新启动信息管理系统。
0054E9DE |. 8D45 FC lea eax, dword ptr [ebp-4]
0054E9E1 |. BA 0A000000 mov edx, 0A
0054E9E6 |. E8 B55DEBFF call 004047A0
0054E9EB |. 6A 40 push 40
0054E9ED |. 8B45 FC mov eax, dword ptr [ebp-4]
0054E9F0 |. E8 EB5EEBFF call 004048E0
0054E9F5 |. 8BD0 mov edx, eax
0054E9F7 |. B9 10EB5400 mov ecx, 0054EB10 ; 注册成功
0054E9FC |. A1 C06B6200 mov eax, dword ptr [626BC0]
0054EA01 |. 8B00 mov eax, dword ptr [eax]
0054EA03 |. E8 88CAF4FF call 0049B490
0054EA08 |. A1 C06B6200 mov eax, dword ptr [626BC0]
0054EA0D |. 8B00 mov eax, dword ptr [eax]
0054EA0F E8 D8C9F4FF call 0049B3EC
0054EA14 |> 33C0 xor eax, eax
0054EA16 |. 5A pop edx
0054EA17 |. 59 pop ecx
0054EA18 |. 59 pop ecx
0054EA19 |. 64:8910 mov dword ptr fs:[eax], edx
0054EA1C |. 68 3EEA5400 push 0054EA3E
0054EA21 |> 8D45 F0 lea eax, dword ptr [ebp-10]
0054EA24 |. BA 03000000 mov edx, 3
0054EA29 |. E8 065AEBFF call 00404434
0054EA2E |. 8D45 FC lea eax, dword ptr [ebp-4]
0054EA31 |. E8 DA59EBFF call 00404410
0054EA36 \. C3 retn
0054EA37 .^ E9 F852EBFF jmp 00403D34
0054EA3C .^ EB E3 jmp short 0054EA21



按F9后程序窗口不会启动,而是跳到下面这里:

7C812A6B 5E pop esi
7C812A6C C9 leave
7C812A6D C2 1000 retn 10
7C812A70 85FF test edi, edi
7C812A72 ^ 0F8E 3693FFFF jle 7C80BDAE
7C812A78 8B55 FC mov edx, dword ptr [ebp-4]
7C812A7B 8955 0C mov dword ptr [ebp+C], edx
7C812A7E 0FB716 movzx edx, word ptr [esi]
7C812A81 8B7D F8 mov edi, dword ptr [ebp-8]
7C812A84 8A143A mov dl, byte ptr [edx+edi]
7C812A87 8811 mov byte ptr [ecx], dl
7C812A89 8B78 0C mov edi, dword ptr [eax+C]
7C812A8C 0FB6D2 movzx edx, dl
7C812A8F 66:8B1457 mov dx, word ptr [edi+edx*2]
7C812A93 66:3B16 cmp dx, word ptr [esi]
7C812A96 0F85 F98A0300 jnz 7C84B595
7C812A9C 8B50 08 mov edx, dword ptr [eax+8]
7C812A9F 66:8B5A 04 mov bx, word ptr [edx+4]
7C812AA3 3819 cmp byte ptr [ecx], bl
7C812AA5 0F84 F78A0300 je 7C84B5A2
……


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 161
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
程序断下来以后不是F9,F7或F8单步跟着着分析
2009-11-10 09:57
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不按F9运行怎么输入注册码对比啊?
2009-11-10 11:40
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
异常了吧
Shift+f9
2009-11-10 15:13
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
把异常都忽略了也行
2009-11-10 15:14
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
额,可以启动了,谢谢达文闻西 提醒
追踪不到注册码,小弟太菜了~~
软件已经发出来了
谁有破解关于这种相关软件的教程能给个链接吗?
2009-11-10 16:21
0
雪    币: 500
活跃值: (205)
能力值: ( LV13,RANK:270 )
在线值:
发帖
回帖
粉丝
7
测试数据
用户名:admin
注册人为:admin
本机的校验码为:0000423A3456
注册码拿ABCDEFG测试.
0054E977  |.  E8 F0F8F4FF   CALL my_proje.0049E26C
0054E97C  |.  84C0          TEST AL,AL
0054E97E  |.  75 2C         JNZ SHORT my_proje.0054E9AC
0054E980  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
0054E983  |.  BA 4CEA5400   MOV EDX,my_proje.0054EA4C                ;  输入注册码不正确,请检查!
0054E988  |.  E8 1B5BEBFF   CALL my_proje.004044A8
0054E98D  |.  6A 40         PUSH 40
0054E98F  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0054E992  |.  E8 495FEBFF   CALL my_proje.004048E0
0054E997  |.  8BD0          MOV EDX,EAX
0054E999  |.  B9 68EA5400   MOV ECX,my_proje.0054EA68                ;  输入错误
0054E99E  |.  A1 C06B6200   MOV EAX,DWORD PTR DS:[626BC0]
0054E9A3  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0054E9A5  |.  E8 E6CAF4FF   CALL my_proje.0049B490
0054E9AA  |.  EB 68         JMP SHORT my_proje.0054EA14
0054E9AC  |>  68 7CEA5400   PUSH my_proje.0054EA7C                   ;  注册成功!\n注册信息为:\n组织名:
0054E9B1  |.  8BB3 3C030000 MOV ESI,DWORD PTR DS:[EBX+33C]
0054E9B7  |.  FF76 48       PUSH DWORD PTR DS:[ESI+48]
0054E9BA  |.  68 A8EA5400   PUSH my_proje.0054EAA8                   ;  \n
0054E9BF  |.  68 B4EA5400   PUSH my_proje.0054EAB4                   ;  注册人:
0054E9C4  |.  FF76 54       PUSH DWORD PTR DS:[ESI+54]
0054E9C7  |.  68 A8EA5400   PUSH my_proje.0054EAA8                   ;  \n
0054E9CC  |.  68 C8EA5400   PUSH my_proje.0054EAC8                   ;  注册码:
0054E9D1  |.  FF76 5C       PUSH DWORD PTR DS:[ESI+5C]
0054E9D4  |.  68 A8EA5400   PUSH my_proje.0054EAA8                   ;  \n
0054E9D9  |.  68 DCEA5400   PUSH my_proje.0054EADC                   ;  感谢您对我们的支持!请重新启动报关信息管理系统。
0054E9DE  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
0054E9E1  |.  BA 0A000000   MOV EDX,0A
0054E9E6  |.  E8 B55DEBFF   CALL my_proje.004047A0
0054E9EB  |.  6A 40         PUSH 40
0054E9ED  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0054E9F0  |.  E8 EB5EEBFF   CALL my_proje.004048E0
0054E9F5  |.  8BD0          MOV EDX,EAX
0054E9F7  |.  B9 10EB5400   MOV ECX,my_proje.0054EB10                ;  注册成功

很容易找到如上代码,可以看到
0054E977  |.  E8 F0F8F4FF   CALL my_proje.0049E26C
0054E97C  |.  84C0          TEST AL,AL

这个为验证函数
0054E977  |.  E8 F0F8F4FF   CALL my_proje.0049E26C //这个函数是
如下:
0049E26C  /$  55            PUSH EBP
0049E26D  |.  8BEC          MOV EBP,ESP
0049E26F  |.  83C4 F0       ADD ESP,-10
0049E272  |.  53            PUSH EBX
0049E273  |.  33DB          XOR EBX,EBX
0049E275  |.  895D F0       MOV DWORD PTR SS:[EBP-10],EBX ; ebp
0049E278  |.  895D F4       MOV DWORD PTR SS:[EBP-C],EBX
0049E27B  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX ;注册人
0049E27E  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX ;用户名
0049E281  |.  8BD8          MOV EBX,EAX
0049E283  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0049E286  |.  E8 4566F6FF   CALL my_proje.004048D0 
//这个函数把注册人,用户名,和验证码的前八位中的01变成02.01 00 00 00 04 00 00 00 变成02 00 00 00 04 00 00 00 //
0049E28B  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
0049E28E  |.  E8 3D66F6FF   CALL my_proje.004048D0
0049E293  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
0049E296  |.  E8 3566F6FF   CALL my_proje.004048D0
0049E29B  |.  33C0          XOR EAX,EAX

0049E29D  |.  55            PUSH EBP
0049E29E  |.  68 56E34900   PUSH my_proje.0049E356
0049E2A3  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0049E2A6  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0049E2A9  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0049E2AC  |.  E8 2F64F6FF   CALL my_proje.004046E0 //把用户名附给eax,执行这个函数.返回值为[eax-4]的值,为04.为用户名的长度.

0049E2B1  |.  3B43 4C       CMP EAX,DWORD PTR DS:[EBX+4C] //与[ebx+4c]比较,
0049E2B4  |.  7F 19         JG SHORT my_proje.0049E2CF //大于则跳转,[ebx+4c]为64.

0049E2B6  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4] //又把用户名附给eax,再执行这个函数,
0049E2B9  |.  E8 2264F6FF   CALL my_proje.004046E0 //返回用户名的长度.

0049E2BE  |.  3B43 50       CMP EAX,DWORD PTR DS:[EBX+50] //与[ebx+50]比较,其值为3,说明用户名长度为3<=len<=64...
0049E2C1  |.  7C 0C         JL SHORT my_proje.0049E2CF

0049E2C3  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
0049E2C6  |.  E8 1564F6FF   CALL my_proje.004046E0 //取回注册码的长度.

0049E2CB  |.  85C0          TEST EAX,EAX
0049E2CD  |.  75 04         JNZ SHORT my_proje.0049E2D3 //注册码长度如果不为0,则跳转.
0049E2CF  |>  33DB          XOR EBX,EBX
0049E2D1  |.  EB 60         JMP SHORT my_proje.0049E333
->跳到这里
0049E2D3  |>  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C] //edx放着[ebp-c]的地址.
0049E2D6  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8] //注册码
0049E2D9  |.  E8 96A9F6FF   CALL my_proje.00408C74 //执行这个函数.这个函数将注册码的,小写全部转化成大写.

0049E2DE  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0049E2E1  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
0049E2E4  |.  E8 BF61F6FF   CALL my_proje.004044A8 //把注册码放入[ebp-c]中.

0049E2E9  |.  8D4D F0       LEA ECX,DWORD PTR SS:[EBP-10]
0049E2EC  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
0049E2EF  |.  8BC3          MOV EAX,EBX
0049E2F1  |.  E8 46FBFFFF   CALL my_proje.0049DE3C // 这个函数应该是得到注册码的函数.放入[ebp-10]中.

0049E2F6  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10] ;00007D189CEF  ,这个里面放着的是注册码,把这个里面的值取出即可.具体算法未分析.
0049E2F9  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8] ; 00007D189CEF  ,这个里面放着的是手动输入的注册码.
0049E2FC  |.  E8 EBA9F6FF   CALL my_proje.00408CEC //?比较两个的长度....额....,不相等返回...非零.

0049E301  |.  85C0          TEST EAX,EAX
0049E303  |.  74 04         JE SHORT my_proje.0049E309
0049E305  |.  33DB          XOR EBX,EBX
0049E307  |.  EB 2A         JMP SHORT my_proje.0049E333

0049E309  |>  8D43 48       LEA EAX,DWORD PTR DS:[EBX+48]
0049E30C  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
0049E30F  |.  E8 5061F6FF   CALL my_proje.00404464

0049E314  |.  8D43 54       LEA EAX,DWORD PTR DS:[EBX+54]
0049E317  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0049E31A  |.  E8 4561F6FF   CALL my_proje.00404464

0049E31F  |.  8D43 5C       LEA EAX,DWORD PTR DS:[EBX+5C]
0049E322  |.  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
0049E325  |.  E8 3A61F6FF   CALL my_proje.00404464

0049E32A  |.  8BC3          MOV EAX,EBX
0049E32C  |.  E8 5B020000   CALL my_proje.0049E58C
0049E331  |.  B3 01         MOV BL,1

0049E333  |>  33C0          XOR EAX,EAX
0049E335  |.  5A            POP EDX
0049E336  |.  59            POP ECX
0049E337  |.  59            POP ECX
0049E338  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0049E33B  |.  68 5DE34900   PUSH my_proje.0049E35D
0049E340  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0049E343  |.  BA 04000000   MOV EDX,4
0049E348  |.  E8 E760F6FF   CALL my_proje.00404434

0049E34D  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
0049E350  |.  E8 BB60F6FF   CALL my_proje.00404410

0049E355  \.  C3            RETN
0049E356   .^ E9 D959F6FF   JMP my_proje.00403D34
0049E35B   .^ EB E3         JMP SHORT my_proje.0049E340

0049E35D   .  8BC3          MOV EAX,EBX
0049E35F   .  5B            POP EBX
0049E360   .  8BE5          MOV ESP,EBP
0049E362   .  5D            POP EBP
0049E363   .  C2 0400       RETN 4


下面是生成注册码的CALL my_proje.0049DE3C
其关键部分:
......
---------------------------------这段是生成注册码的过程...
0049DF34  |>  8B45 F0       /MOV EAX,DWORD PTR SS:[EBP-10]
0049DF37  |.  8B55 F4       |MOV EDX,DWORD PTR SS:[EBP-C]
0049DF3A  |.  0346 68       |ADD EAX,DWORD PTR DS:[ESI+68]   ;注意这里的数据....
0049DF3D  |.  1356 6C       |ADC EDX,DWORD PTR DS:[ESI+6C]
0049DF40  |.  52            |PUSH EDX
0049DF41  |.  50            |PUSH EAX
0049DF42  |.  8B45 E0       |MOV EAX,DWORD PTR SS:[EBP-20]
0049DF45  |.  0FB64418 FF   |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]
0049DF4A  |.  50            |PUSH EAX
0049DF4B  |.  B8 59040000   |MOV EAX,459
0049DF50  |.  5A            |POP EDX
0049DF51  |.  8BCA          |MOV ECX,EDX
0049DF53  |.  33D2          |XOR EDX,EDX
0049DF55  |.  F7F1          |DIV ECX
0049DF57  |.  8BC2          |MOV EAX,EDX
0049DF59  |.  33D2          |XOR EDX,EDX
0049DF5B  |.  290424        |SUB DWORD PTR SS:[ESP],EAX
0049DF5E  |.  195424 04     |SBB DWORD PTR SS:[ESP+4],EDX
0049DF62  |.  58            |POP EAX
0049DF63  |.  5A            |POP EDX
0049DF64  |.  8945 F0       |MOV DWORD PTR SS:[EBP-10],EAX
0049DF67  |.  8955 F4       |MOV DWORD PTR SS:[EBP-C],EDX
0049DF6A  |.  4B            |DEC EBX
0049DF6B  |>  8B45 E0        MOV EAX,DWORD PTR SS:[EBP-20]
0049DF6E  |.  E8 6D67F6FF   |CALL my_proje.004046E0
0049DF73  |.  3BD8          |CMP EBX,EAX
0049DF75  |.  7F 04         |JG SHORT my_proje.0049DF7B
0049DF77  |.  85DB          |TEST EBX,EBX
0049DF79  |.^ 7F B9         \JG SHORT my_proje.0049DF34
---------------------------
......

上述得到注册码
下面是拿php写的注册机,
<?php
$a = 0x75bcd15;
$b = 0;
$code = "000042admin3A3456"; //这里把用户名放到校验码的中间.
$len = strlen($code);

for ($i = 0;$i < $len;$i ++)
{
	$b = $b + $a;
	$b = $b - 0x459%ord($code[$len-$i-1]); 
}
$c = dechex($b);
echo "0000".$c;
?>

不过不知道为什么,注册成功之后,仍提示为未注册版本....
不知道为啥....反正弹出注册成功的提示框来了....
2009-11-12 11:25
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
提示为未注册版本,那个时间限制还存在吗?
2009-11-12 16:25
0
雪    币: 500
活跃值: (205)
能力值: ( LV13,RANK:270 )
在线值:
发帖
回帖
粉丝
9
存在...
但明明注册成功了的.
诡异啊.
......
2009-11-12 16:50
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
呵呵,我后面没有管注册了
受网上部分贴子的启发,直接爆破的
在显示未注册的跳转这里用NOP填充了,一打开就显示为注册版了
然后再在试用时间过期需注册的提示那个跳转也用NOP填充,那样就算试用时间到了,虽然确认按钮是灰色的不能点击,但输完账号密码直接按回车键还是可以进入
你可以把你的电脑时间往前推一天试下,往前推一天就会提示试用到期不能进了~

不知道是不是这个软件还没有开放注册的原因,因为还是测试版,要不然注册码对了应该就是提示已注册了啊
你对代码熟悉的话可以研究下未注册部分的代码看下是不是这样的
2009-11-12 18:05
0
雪    币: 500
活跃值: (205)
能力值: ( LV13,RANK:270 )
在线值:
发帖
回帖
粉丝
11
额,我以为你只要那个注册的算法呢...就把算法的部分看了下..
能用就成了.
呵呵..
2009-11-13 12:01
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
汗~我现在哪里能接触这些啊
还在初学中呢~~
现在正在学习王爽的汇编第二版
最起码要先弄懂这些代码的意思了才能再来接触那些高深的东西
2009-11-13 23:53
0
游客
登录 | 注册 方可回帖
返回
//