- UID
- 1491
注册时间2005-5-8
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 开心 2024-1-6 12:21 |
---|
签到天数: 90 天 [LV.6]常住居民II
|
本帖最后由 东方青石 于 2019-1-29 01:14 编辑
起因:因试用目前比较火的脚本下了个编辑器,但有试用期限,软件虽不贵,但因个人并不是经常要用,仅仅因为兴趣,突然想起X一番。
思路:既然是兴趣,优先分析算法,
1.首先PEID检测,无壳,VC++源码。心里暗喜。
2.OD加载,运行发现代码会变地址,F8一次代码地址变一次,部分代码显示??,程序一开始开了N多线程,以为有线程抗调试导致。
3.用x32dbg发现加载正常,字符串搜索后,开始分析过程
4.关键部分代码:
51F04B16 | 6A 03 | push 3 | 可能是功能标志
51F04B18 | 50 | push eax | 公钥信息指针
51F04B19 | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-88] | 注册码明文位置
51F04B1F | 8D4D D8 | lea ecx,dword ptr ss:[ebp-28] | ss:[ebp-0x28]这个变量指针作为参数
51F04B22 | E8 F9FCFFFF | call <*******sub_51F04820> | 调用RSA公钥解密,注册码实际是用私钥加密的
51F04B27 | 83C4 08 | add esp,8 | ,EAX解密地址
51F04B2A | 8D4D A8 | lea ecx,dword ptr ss:[ebp-58] | 解密后拿机器码和解密的返回值比较,不对说明出错
51F04B3B | E8 90D10D00 | call <*******.sub_51FE1CD0> | 读取机器码
51F04B40 | 8378 14 10 | cmp dword ptr ds:[eax+14],10 | 前面计算得到的8F
51F04B44 | 8B50 10 | mov edx,dword ptr ds:[eax+10] | 长度80
51F04B47 | 72 02 | jb *******.51F04B4B |
51F04B49 | 8B00 | mov eax,dword ptr ds:[eax] | 机器码
|
51F04B5A | 52 | push edx | 机器码长度
51F04B5B | 50 | push eax | 传入机器码
51F04B5C | 0F43CF | cmovae ecx,edi
51F04B5F | 53 | push ebx | 机器码长度
51F04B60 | 51 | push ecx | 这里存了一组数据,用于比对,ECX中的数据为RSA解密数据地址,如果正确应该是在这里直接比对正确
51F04B61 | E8 CAE7F1FF | call <*******.比较ecx和edx字符串> | 比较
51F04B66 | 83C4 10 | add esp,10 |
51F04B69 | 84C0 | test al,al |
51F04B6B | 75 35 | jne *******.51F04BA2 | 比对上直接跳,否则要一定步骤后再比较
一开始不知道是RSA加密,只知道那是一个加密过程,因此分析花了2天时间,查到真正的核心部分发现是RSA加密后还不死心以为软件作者可能会因为失误把私钥搞进来,然而分析了所有加密过程都没看到,只知道是用公钥解密,其他加密函数均无调用。
根据RSA特点说明注册码经过公钥解密应该能拿到机器码信息,解密后应该是机器码或者机器码相关处理后的数据,查了比对过程,本程序是机器码直接比较。分析了一下机器码的产生过程,人都看晕了,各种MMX指令
由于无法通过追码逆向分析加密过程,因此考虑爆破处理。
51F04B6B | 75 35 改74 35 即可过注册
该程序还有授权时间的检测,程序在启动后会联网检查授权。
如果只改个别过网络授权检查地方,不会报错,但电脑CPU瞬间会爆棚,我I7-8550瞬间增加了50%的占用,电脑风扇急速运行。因此必须把所有授权日期验证点全改完。此处就不上代码了。
心血来潮,作为论坛骨灰级潜水员难得发文一次。因为学习和工作环境基本没搞过了。现在心血来潮搞搞。
因程序怕涉及违反版规,因此部分打*掩盖。
本程序核心代码全靠DLL调用,EXE仅仅是UI设计,做的还是比较好的作品。
OD无法识别部分代码原因:本程序用了CPUID,MMX,还有涉及GPU之类的代码。导致代码地址在OD中不对,再加上动态加载每次地址都有变化,因此OD调试会变地址,我没有试附加运行,不知附加运行会不会。
另本想用PYG DLL劫持,结果发现怎么也HOOK不到正确API,我关于PYG DLL的疑问见传送门:https://www.chinapyg.com/forum.p ... 1&extra=#pid2181968
x32修改不知道怎么弄,只好上IDA,又下了个IDA修改,又搞了2个小时,终于把DLL给修改了,软件并没有加DLL文件的校验,改完就好了。
就这些啦,难得发文一次,有需要的讲究看看把
|
评分
-
查看全部评分
|