记住他的位置1F1A23B下内存访问断点。
我们知道堆栈的入栈方式是:“先入后出”那么箭头所指的3个地方程序的分支。他们都在出现未注册版本之前的。所以向下逐个分析call
第一个call
00A0CA08 |. E8 53030000 call Efficien.00A0CD60
00A0CA0D |. 84C0 test al,al
00A0CA0F 74 0C je XEfficien.00A0CA1D 跳过jmp
00A0CA11 |. 8B45 08 mov eax,[arg.1]
00A0CA14 |. 8BD6 mov edx,esi
00A0CA16 |. E8 898B9FFF call Efficien.004055A4
00A0CA1B |. EB 21 jmp XEfficien.00A0CA3E 跳过返回处
00A0CA1D |> 56 push esi
00A0CA1E |. 8D45 F8 lea eax,[local.2]
00A0CA21 |. 50 push eax
00A0CA22 |. 8B4D FC mov ecx,[local.1]
00A0CA25 |. BA 6CCAA000 mov edx,Efficien.00A0CA6C
00A0CA2A |. 8B43 08 mov eax,dword ptr ds:[ebx+0x8]
00A0CA2D |. 8B30 mov esi,dword ptr ds:[eax]
00A0CA2F |. FF16 call dword ptr ds:[esi]
00A0CA31 |. 8B55 F8 mov edx,[local.2] 返回处
分析得出:该软件是多国语言版本。如果跳过此处,就会是英文版本
第二处返回
00A235D0 /$ 53 push ebx
00A235D1 |. 8BDA mov ebx,edx
00A235D3 |. 53 push ebx
00A235D4 |. B2 01 mov dl,0x1
00A235D6 |. A1 DCBDA000 mov eax,dword ptr ds:[0xA0BDDC]
00A235DB |. E8 9494FEFF call Efficien.00A0CA74
00A235E0 |. B9 FC35A200 mov ecx,Efficien.00A235FC
00A235E5 |. BA 1C36A200 mov edx,Efficien.00A2361C
00A235EA |. E8 F593FEFF call Efficien.00A0C9E4
00A235EF |. 5B pop ebx
没有什么判断,只是调用了子程序!可以放弃这里分析
第三处返回
00C2E788 . /EB 5B jmp XEfficien.00C2E7E5 跳过返回处
00C2E78A > |B2 01 mov dl,0x1 这里必然是上面跳转下来
00C2E78C . |A1 48B2A100 mov eax,dword ptr ds:[0xA1B248]
00C2E791 . |E8 4657DFFF call Efficien.00A23EDC
00C2E796 . |8D95 7CFFFFFF lea edx,dword ptr ss:[ebp-0x84]
00C2E79C . |E8 2F4EDFFF call Efficien.00A235D0
00C2E7A1 . |8B95 7CFFFFFF mov edx,dword ptr ss:[ebp-0x84] 返回处
好大的跳转!哈哈就是他
没什么好的方案
只好把00C2E537 0F8E 4D020000
修改为00C2E537 0F8E 00000000
好了,现在貌似启动软件还是提醒试用!有注册提示框,继续搞掉注册
还是用上面方法,巩固下姿势!嘿嘿
第一处返回
00A23494 /$ 53 push ebx
00A23495 |. 8BDA mov ebx,edx
00A23497 |. 53 push ebx
00A23498 |. B2 01 mov dl,0x1
00A2349A |. A1 DCBDA000 mov eax,dword ptr ds:[0xA0BDDC]
00A2349F |. E8 D095FEFF call Efficien.00A0CA74
00A234A4 |. B9 C034A200 mov ecx,Efficien.00A234C0 ; ASCII 53,"orry, your registration code is not valid. Please enter the code again."
00A234A9 |. BA 1435A200 mov edx,Efficien.00A23514
00A234AE |. E8 3195FEFF call Efficien.00A0C9E4
00A234B3 |. 5B pop ebx
00A234B4 \. C3 retn
我们猜这里是错误的提示开始,因为没有分支,但是有2次调用,这2处调用很可疑,如果错误就跳到这里来提示错误信息!我们到两处调用下断时会发现其实第二处调用正是我们第二次返回的地方!
先去第二处观察一下!
看来callxxxxxx 00c30964很关键啊
进去后代码很短
00A2AFE0 /$ 83C4 E8 add esp,-0x18
00A2AFE3 |. 8BCC mov ecx,esp
00A2AFE5 |. E8 F6FCFFFF call Efficien.00A2ACE0
00A2AFEA |. 83C4 18 add esp,0x18
00A2AFED \. C3 retn
看来关键是00A2AFE5 |. E8 F6FCFFFF call Efficien.00A2ACE0
再次进入
00A2ACE0 $ 55 push ebp
00A2ACE1 . 8BEC mov ebp,esp
00A2ACE3 . 51 push ecx
00A2ACE4 . B9 0A000000 mov ecx,0xA
00A2ACE9 > 6A 00 push 0x0
00A2ACEB . 6A 00 push 0x0
00A2ACED . 49 dec ecx
00A2ACEE .^ 75 F9 jnz XEfficien.00A2ACE9
00A2ACF0 . 874D FC xchg dword ptr ss:[ebp-0x4],ecx
00A2ACF3 . 53 push ebx
00A2ACF4 . 56 push esi
00A2ACF5 . 57 push edi
00A2ACF6 . 8BD9 mov ebx,ecx
00A2ACF8 . 8955 FC mov dword ptr ss:[ebp-0x4],edx
00A2ACFB . 8BF0 mov esi,eax
00A2ACFD . 33C0 xor eax,eax
………………………………
00A2AFA2 . 68 BCAFA200 push Efficien.00A2AFBC
00A2AFA7 > 8D45 AC lea eax,dword ptr ss:[ebp-0x54]
00A2AFAA . BA 13000000 mov edx,0x13
00A2AFAF . E8 C0A59DFF call Efficien.00405574
00A2AFB4 . C3 retn
00A2AFB5 .^ E9 0E9E9DFF jmp Efficien.00404DC8
00A2AFBA .^ EB EB jmp XEfficien.00A2AFA7
00A2AFBC . 8A45 FB mov al,byte ptr ss:[ebp-0x5]
00A2AFBF . 5F pop edi
00A2AFC0 . 5E pop esi
00A2AFC1 . 5B pop ebx
00A2AFC2 . 8BE5 mov esp,ebp
00A2AFC4 . 5D pop ebp
00A2AFC5 . C3 retn
很长的代码,这一看就知道是算法
关键在结尾处
00A2AFBC . 8A45 FB mov al,byte ptr ss:[ebp-0x5]
在结束前给al赋值
分析代码一会再说,这里先爆破!
00A2AFBC . 8A45 FB mov al,byte ptr ss:[ebp]
随便找个不是0的给al赋值
至此软件启动没有提示注册框!关于也是注册的,至于功能我没用也不知道有没验证!
注册码共35位:
前3位固定为“EP-”
第4位-第15位为任意12位 000000000000
第19位和第20位为固定的“31”
第22位-第24位为“000”
第28-35位,这几位存储的是购买日期。
20150102转换16进制1337756在倒叙6577331然后将顺数第三位移到倒数第三位6573731
第28位、6
第29位、5
第31位、7
第32位、3
第33位、7
第34位、3
第35位、1
第16位、第17位、第18位、第21位
100转换16进制0064 2、3换位变0604
依次放到注册码的
第21位、0
第16位、6
第17位、0
第18位、4
注册码的第25位、第26位、第27位、第30位,这几位存储的是免费升级截至日期
到2017年1月2日是24个月
24转化16进制0018 2、3换位还是0108
依次放到注册码的
第30位、0
第25位、1
第26位、0
第27位、8
注册码:EP-00000000000060431000010865073731
算法是别人写的,我也忘记是那里找的了,反正不是我!我还是菜鸟一枚,
准备在下半年开始学习算法,最近段时间在巩固汇编