好友
阅读权限 10
听众
最后登录 1970-1-1
程序是.net写的 无壳 初步测试是网络验证
调试环境VMWARE 11+XP
思路. 挂钩Send 与recv 挂钩messageboxw(前辈提出.net程序全部都是unicode编码所以挂钩W)
调试程序OD
程序以注册码形式登陆 post一条数据到一个地址中 地址这里就不写了
程序打开时需要输入验证码 经过一番查找本地验证码比较无果后 打开抓包工具发现是网络验证
由于不知道对方验证机制 所以挂钩recv
然后随意输入注册码点登陆
已知第一次返回数据为是否连接成功消息
所以直接F5一次 第二次断到recv的时候应该就是远程数据返回的时候了
由于程序经过代码混淆 所以读起来很不方便
一直在F8中............
然后突然弹出了提示注册码失败 (每次遇到CALL 都会记录内存地址)
紧接着第二次跑起程序 根据上一次失败的位置找到如下位置
程序来到一个call处
03DF2D8B call 79B2EC00 //判断返回值的地方
03DF2D90 test eax,eax
03DF2D92 jz 03DF2DAF //是否提示注册码无效或其他信息
03DF2D94 lea esp,[ebp-0xC]
03DF2D97 pop ebx
03DF2D98 pop esi
03DF2D99 pop edi
03DF2D9A pop ebp
03DF2D9B ret
03DF2D9C cmp eax,5
03DF2D9F jnb 03DF2DA8
03DF2DA1 jmp dword ptr [eax*4+0x3DF2DD0]
03DF2DA8 mov eax,0x4
03DF2DAD jmp 03DF2D9C
03DF2DAF mov ecx,0x79B9FC0C
03DF2DB4 call 00A42020 //弹出注册码无效的 消息框关键call
03DF2DB9 mov edi,eax
03DF2DBB mov edx,esi
03DF2DBD mov ecx,edi
03DF2DBF call 7A042D98
03DF2DC4 mov ecx,edi
03DF2DC6 call 791CAD5E
03DF2DCB int 3
03DF2DCC add [eax],al
03DF2DCE add [eax],al
03DF2DD0 mov [edi+ebx*8],gs
03DF2DD3 add ebx,[eax-0x73FC20D4]
jz 03DF2DAF判断返回值 然后是否弹出正常的消息
破解 到这里就完成了
第一次写破解文章与破解程序···写的不好 主要提供一些思路
免费评分
查看全部评分
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。