- UID
- 22350
注册时间2006-10-1
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 奋斗 2017-6-11 12:16 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
|
【破文标题】一个屏幕录像专家生成exe文件的密码的算法分析
【破文作者】XXNB
【作者邮箱】支持PYG
【作者主页】binbinbin7456.ys168.com
【破解工具】OD
【破解平台】XPsp2
【软件名称】
【软件大小】
【原版下载】https://www.chinapyg.com/viewthr ... &extra=page%3D2
【保护方式】
【软件简介】
【破解声明】菜鸟向高手学习!只为学习!
------------------------------------------------------------------------
【破解过程】
那个录像就在本论坛的上面那个网址 https://www.chinapyg.com/viewthr ... &extra=page%3D2
早上看到这个东西,然后顺便分析了下。然后就有了这篇东西。
这个录像被我证实是不能播放的。就算输入的是正确的密码,也是会出错,提示“高度无损解压缩出错”。也许是录像作者弄的。
我来分析下算法而已。
字符串查找“密码不对”可以找到下面代码:
0040E280 /$ 55 push ebp
0040E281 |. 8BEC mov ebp, esp
0040E283 |. 83C4 AC add esp, -54
0040E286 |. 53 push ebx
0040E287 |. 56 push esi
0040E288 |. 57 push edi
0040E289 |. 8BD8 mov ebx, eax
0040E28B |. 8D75 C4 lea esi, dword ptr [ebp-3C]
0040E28E |. B8 904D4800 mov eax, 00484D90
0040E293 |. E8 34320500 call 004614CC
0040E298 |. 66:C746 10 08>mov word ptr [esi+10], 8
0040E29E |. 8D45 FC lea eax, dword ptr [ebp-4]
0040E2A1 |. E8 6A38FFFF call 00401B10
0040E2A6 |. 8BD0 mov edx, eax
0040E2A8 |. FF46 1C inc dword ptr [esi+1C]
0040E2AB |. 8B83 D4020000 mov eax, dword ptr [ebx+2D4]
0040E2B1 |. E8 8AA20200 call 00438540
0040E2B6 |. 8D55 FC lea edx, dword ptr [ebp-4]
0040E2B9 |. 52 push edx
0040E2BA |. BA E44C4800 mov edx, 00484CE4
0040E2BF |. 8D45 F8 lea eax, dword ptr [ebp-8]
0040E2C2 |. E8 39E20500 call 0046C500
0040E2C7 |. FF46 1C inc dword ptr [esi+1C]
0040E2CA |. 8D55 F8 lea edx, dword ptr [ebp-8]
0040E2CD |. 58 pop eax
0040E2CE |. E8 B5E30500 call 0046C688
0040E2D3 |. 50 push eax
0040E2D4 |. FF4E 1C dec dword ptr [esi+1C]
0040E2D7 |. 8D45 F8 lea eax, dword ptr [ebp-8] ; (Initial CPU selection)
0040E2DA |. BA 02000000 mov edx, 2
0040E2DF |. E8 D4E20500 call 0046C5B8
0040E2E4 |. FF4E 1C dec dword ptr [esi+1C] ; |
0040E2E7 |. 8D45 FC lea eax, dword ptr [ebp-4] ; |
0040E2EA |. BA 02000000 mov edx, 2 ; |
0040E2EF |. E8 C4E20500 call 0046C5B8 ; \加密录像.0046C5B8
0040E2F4 |. 59 pop ecx
0040E2F5 |. 84C9 test cl, cl
0040E2F7 |. 74 49 je short 0040E342
0040E2F9 |. 66:C746 10 14>mov word ptr [esi+10], 14
0040E2FF |. BA E54C4800 mov edx, 00484CE5 ; 请输入密码
0040E304 |. 8D45 F4 lea eax, dword ptr [ebp-C]
0040E307 |. E8 F4E10500 call 0046C500
0040E30C |. FF46 1C inc dword ptr [esi+1C]
0040E30F |. 8B00 mov eax, dword ptr [eax]
0040E311 |. E8 9A510200 call 004334B0
0040E316 |. FF4E 1C dec dword ptr [esi+1C]
0040E319 |. 8D45 F4 lea eax, dword ptr [ebp-C]
0040E31C |. BA 02000000 mov edx, 2
0040E321 |. E8 92E20500 call 0046C5B8
0040E326 |. 8B83 D4020000 mov eax, dword ptr [ebx+2D4]
0040E32C |. 8B10 mov edx, dword ptr [eax]
0040E32E |. FF92 B0000000 call dword ptr [edx+B0]
0040E334 |. 8B0E mov ecx, dword ptr [esi]
0040E336 |. 64:890D 00000>mov dword ptr fs:[0], ecx
0040E33D |. E9 39010000 jmp 0040E47B
0040E342 |> 6A 15 push 15 ; /Arg3 = 00000015
0040E344 |. 6A 00 push 0 ; |Arg2 = 00000000
0040E346 |. 8D45 AC lea eax, dword ptr [ebp-54] ; |
0040E349 |. 50 push eax ; |Arg1
0040E34A |. E8 292E0500 call 00461178 ; \加密录像.00461178
0040E34F |. 83C4 0C add esp, 0C
0040E352 |. 66:C746 10 20>mov word ptr [esi+10], 20
0040E358 |. 8D45 F0 lea eax, dword ptr [ebp-10]
0040E35B |. E8 B037FFFF call 00401B10
0040E360 |. 8BD0 mov edx, eax
0040E362 |. FF46 1C inc dword ptr [esi+1C]
0040E365 |. 8B83 D4020000 mov eax, dword ptr [ebx+2D4]
0040E36B |. E8 D0A10200 call 00438540
0040E370 |. 8D45 F0 lea eax, dword ptr [ebp-10]
0040E373 |. E8 A068FFFF call 00404C18 ; 上面那堆不知道干吗的
0040E378 |. 8BF8 mov edi, eax ; 这里看得到输入的假码
0040E37A |. 33C0 xor eax, eax
0040E37C |. 56 push esi ; 下面这堆也不知道干吗的
0040E37D |. 83C9 FF or ecx, FFFFFFFF
0040E380 |. F2:AE repne scas byte ptr es:[edi]
0040E382 |. F7D1 not ecx
0040E384 |. 2BF9 sub edi, ecx
0040E386 |. 8D75 AC lea esi, dword ptr [ebp-54]
0040E389 |. 87F7 xchg edi, esi
0040E38B |. 8BD1 mov edx, ecx
0040E38D |. 8BC7 mov eax, edi
0040E38F |. C1E9 02 shr ecx, 2
0040E392 |. 8D45 F0 lea eax, dword ptr [ebp-10]
0040E395 |. F3:A5 rep movs dword ptr es:[edi], dword p>
0040E397 |. 8BCA mov ecx, edx
0040E399 |. BA 02000000 mov edx, 2
0040E39E |. 83E1 03 and ecx, 3
0040E3A1 |. F3:A4 rep movs byte ptr es:[edi], byte ptr>
0040E3A3 |. 5E pop esi
0040E3A4 |. FF4E 1C dec dword ptr [esi+1C]
0040E3A7 |. E8 0CE20500 call 0046C5B8
0040E3AC |. 8D4D AC lea ecx, dword ptr [ebp-54] ; 输入的假码
0040E3AF |. 51 push ecx ; /假码入栈
0040E3B0 |. 53 push ebx ; |这个固定字符串入栈(ASCII " NH")。好像没有用上的
0040E3B1 |. E8 CE000000 call 0040E484 ; \这个是算法call。简单的算法,跟进《《《《《《《《《
0040E3B6 |. 83C4 08 add esp, 8
0040E3B9 |. 3B83 E4020000 cmp eax, dword ptr [ebx+2E4] ; 和10FD比较
0040E3BF 0F84 9F000000 je 0040E464 ; 如果相等就成功了
0040E3C5 |. FF83 E8020000 inc dword ptr [ebx+2E8]
0040E3CB |. 83BB E8020000>cmp dword ptr [ebx+2E8], 3
0040E3D2 |. 75 3F jnz short 0040E413
0040E3D4 |. 66:C746 10 2C>mov word ptr [esi+10], 2C
0040E3DA |. BA F04C4800 mov edx, 00484CF0 ; 密码不对
0040E3DF |. 8D45 EC lea eax, dword ptr [ebp-14]
0040E3E2 |. E8 19E10500 call 0046C500
0040E3E7 |. FF46 1C inc dword ptr [esi+1C]
0040E3EA |. 8B00 mov eax, dword ptr [eax]
0040E3EC |. E8 BF500200 call 004334B0
0040E3F1 |. FF4E 1C dec dword ptr [esi+1C]
0040E3F4 |. 8D45 EC lea eax, dword ptr [ebp-14]
0040E3F7 |. BA 02000000 mov edx, 2
0040E3FC |. E8 B7E10500 call 0046C5B8
0040E401 |. 8BC3 mov eax, ebx
0040E403 |. E8 58E50100 call 0042C960
0040E408 |. 8B16 mov edx, dword ptr [esi]
0040E40A |. 64:8915 00000>mov dword ptr fs:[0], edx
0040E411 |. EB 68 jmp short 0040E47B
0040E413 |> 66:C746 10 38>mov word ptr [esi+10], 38
0040E419 |. BA F94C4800 mov edx, 00484CF9 ; 密码不对,请重新输入
0040E41E |. 8D45 E8 lea eax, dword ptr [ebp-18]
0040E421 |. E8 DAE00500 call 0046C500
0040E426 |. FF46 1C inc dword ptr [esi+1C]
0040E429 |. 8B00 mov eax, dword ptr [eax]
0040E42B |. E8 80500200 call 004334B0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
然后跟进算法call 》》》》》》 0040E3B1 |. E8 CE000000 call 0040E484 《《《《《《《
0040E484 /$ 55 push ebp
0040E485 |. 8BEC mov ebp, esp
0040E487 |. 53 push ebx
0040E488 |. 56 push esi
0040E489 |. 57 push edi
0040E48A |. BF D5070000 mov edi, 7D5 ; 常量7D5(2005)
0040E48F |. 33F6 xor esi, esi ; 清空esi。准备做计数器
0040E491 |. 8B45 0C mov eax, dword ptr [ebp+C]
0040E494 |. 8BC8 mov ecx, eax
0040E496 |. EB 19 jmp short 0040E4B1
0040E498 |> 8BC6 /mov eax, esi ; 下标付给eax
0040E49A |. 51 |push ecx
0040E49B |. B9 05000000 |mov ecx, 5 ; 常数
0040E4A0 |. 99 |cdq
0040E4A1 |. F7F9 |idiv ecx ; 除以5。
0040E4A3 |. 59 |pop ecx
0040E4A4 |. 03C6 |add eax, esi ; 整数部分+下标
0040E4A6 |. 40 |inc eax ; 然后再加1。
0040E4A7 |. 33D2 |xor edx, edx
0040E4A9 |. 8AD3 |mov dl, bl ; ascii移到dl
0040E4AB |. F7EA |imul edx ; *
0040E4AD |. 03F8 |add edi, eax ; 加上常量7d5(2005)。结果累加在这里
0040E4AF |. 46 |inc esi
0040E4B0 |. 41 |inc ecx
0040E4B1 |> 8A19 mov bl, byte ptr [ecx] ; 逐个取输入的假码
0040E4B3 |. 84DB |test bl, bl
0040E4B5 |.^ 75 E1 \jnz short 0040E498 ; 这个循环的结果在edi。所以直接执行到下一行,看结果
0040E4B7 |. 8BC7 mov eax, edi ; 结果放到eax
0040E4B9 |. 5F pop edi
0040E4BA |. 5E pop esi
0040E4BB |. 5B pop ebx
0040E4BC |. 5D pop ebp
0040E4BD \. C3 retn
.版本 2
.程序集 窗口程序集1
.子程序 _按钮1_被单击
.局部变量 name, 文本型
.局部变量 len, 整数型
.局部变量 eax, 整数型
.局部变量 i, 整数型
.局部变量 sum, 整数型
.局部变量 temp, 整数型
.局部变量 esi, 整数型
name = 编辑框1.内容
len = 取文本长度 (name)
sum = 2005
esi = 0
.计次循环首 (len, i)
eax = 取代码 (name, i)
i = esi
temp = i \ 5
i = i + temp
i = i + 1
eax = eax × i
sum = sum + eax
esi = esi + 1
.计次循环尾 ()
编辑框2.内容 = 到文本 (sum)
------------------------------------------------------------------------
【破解总结】
我给的那个易语言的源代码功能是算号而已。要自己去尝试。只要结果能得到 4349 就是成功的。慢慢试吧。
我给出两个可用的密码
baahzi
ginbip
1、总的算法就是如果对输入的密码的运算最后等于10FD(4349)的话,就成功。
2、对输入的密码的运算的代码很短,看代码去,很简单的。
[ 本帖最后由 binbinbin 于 2006-11-29 10:04 编辑 ] |
评分
-
查看全部评分
|