能力值:
( LV4,RANK:50 )
2 楼
你的思路是:
将用户名和密码生成公钥然后和程序的数据运算
再把得出的结果写入程序代码段作为程序的成功界面来运行。如果没有用户名是很难搞定,但是如果没有用户名成功的结果就不是唯一的了
有点单向加密的感觉。有点像WINRAR
我感觉有一个地方可以做手脚,就是在程序运算的时候用了除法,可以联想到“0”。不过向前推,没推出来:(
就这些,^_^
能力值:
( LV3,RANK:30 )
3 楼
双向加密 , 有待了解
能力值:
(RANK:1060 )
4 楼
need realkey
能力值:
( LV2,RANK:10 )
5 楼
在此感谢各位高手的关注,对此程序的耐心研究。不多说了,提出本人一点点破解思路。
纯粹个人意见,高手路走通了,希望可以与我继续交流其他方法。
相信各位高手一定在破解过程中得到了以下信息吧:
输入用户名与密码通过一定运算得到密钥。
使用密钥去对密文解密。
而密钥的长度为8个字节。
那可想而知破解这8个字节就是破解程序的关键了。
对于您是否已经发现本程序加密的代码恰好正是一个完整的函数体呢。
既然是函数体,又很完整,那入口和最后的ret是少不了的。
既然这些信息我们都有了,用VC编译一个带有普通入口的函数,将二进制代码拷贝出来。
函数入口形式。
push ebp 55
mov ebp,esp 8B EC
sub esp,0xXX 83 EC XX
mov eax,dword ptr [0xXXXXXXXX] A1 XX XX XX XX
xor eax,ebp 33 C5
mov dword ptr [ebp-4],eax 89 45 FC
函数返回形式。
00401302 pop esi
00401303 mov ecx,dword ptr [ebp-4]
00401306 xor ecx,ebp
00401308 call __security_check_cookie (408AF4h)
0040130D mov esp,ebp
0040130F pop ebp
00401310 ret 10h 再将程序加密的起始地址找到(这个不难吧,这里就不多说了。)
得到以下字节
0x004011D0 17 BC D4 A7 D8 4D 92 5F 66 75 38 17 F1 A4 76 DF
序 号 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
这些当然就是函数入口被加密过的密文了。
那还有一个信息就是加密方式,都看到 xor 了吧,不多说,全部在 xor 回来。
0xXXXXXXXX 55 8B EC 83 EC XX A1 XX XX XX XX 33 C5 89 45 FC
0x004011D0 17 BC D4 A7 D8 4D 92 5F 66 75 38 17 F1 A4 76 DF
序 号 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
密 钥 42 37 38 24 42 -- 33 -- -- -- -- 24 34 3D 33 23
密钥只有8个字节我们只要得到这些就足够了,以后的全部用这8个字节循环解密,是不是破了呀 ^_^。
这里只是提供一种破解思路,只利用了程序入口,当然程序入口并不一定是这个样子,那还有返回部分呢!
如果加密不是函数入口开始,不是函数返回结束 ..... - -! 我也没太好的方法了~~
还请各位高手多多指点,其他破解方法。本人将感激不尽。
能力值:
( LV4,RANK:50 )
6 楼
嗯,思路很好