BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #39804同步于 2010/12/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

写论文好帮手,由源代码生成流程图的软件——AutoFlowchart破解

jmpesp
2010/12/6镜像同步16 回复
重要声明! 本文纯属学习交流之用,由本文所造成的一切法律纠纷均与作者本人无关! 最近在忙着写毕业论文,就到网上搜下有没有直接从源代码生成流程图的软件,搜索的结果是一款叫AutoFlowchart的软件可以做到,但是共享软件,需要注册,不然有功能限制——无法把生成图保存为visio等占用格式,还会在关闭之间弹出nag提醒注册。本来是想看看网上有没有它的破解版,很可惜的是,找不到,所以只好自己动手了。 所用版本是v3.1.3 查下壳看看,显示如下: 先不管了,打开OD载入看看: 006C8000 > $ 60 pushad 006C8001 . E8 01000000 call 006C8007 006C8006 7E db 7E ; CHAR '~' 006C8007 . 83C4 04 add esp, 4 006C800A . 47 inc edi 006C800B . F8 clc 006C800C . 42 inc edx 006C800D . 42 inc edx 006C800E . 43 inc ebx 006C800F . 41 inc ecx 006C8010 . 66:81F2 B931 xor dx, 31B9 006C8015 . 50 push eax 006C8016 . E8 01000000 call 006C801C 006C801B >- 72 83 jb short 006C7FA0 006C801D . C40458 les eax, [eax+ebx*2] 006C8020 . 81C9 995E1262 or ecx, 62125E99 经过大概判断,认为这个是很可能是由Delphi写的,至少是Borland产的。 经过一系列分析,大概知道了注册流程: 弹出注册框要你注册,填写完后软件把注册码和用户名保存在注册表,然后要求重启软件进行验证。 又经过一系列的分析,找到了关键代码: 006053E1 . 8D55 F4 lea edx, [ebp-C] 006053E4 . B8 98576000 mov eax, 00605798 ; ASCII "Name_AF737" 006053E9 . E8 F22AF4FF call 00547EE0 006053EE . 8D55 F0 lea edx, [ebp-10] 006053F1 . B8 AC576000 mov eax, 006057AC ; ASCII "Code_AF911" 006053F6 . E8 E52AF4FF call 00547EE0 006053FB . 8B45 F0 mov eax, [ebp-10] 006053FE . E8 15F3DFFF call 00404718 00605403 . 83F8 04 cmp eax, 4 00605406 . 0F8E 94000000 jle 006054A0 0060540C . 33C0 xor eax, eax 0060540E . 55 push ebp 0060540F . 68 96546000 push 00605496 00605414 . 64:FF30 push dword ptr fs:[eax] 00605417 . 64:8920 mov fs:[eax], esp 0060541A . 33C0 xor eax, eax 0060541C . 8945 EC mov [ebp-14], eax 0060541F > B8 32000000 mov eax, 32 00605424 . E8 9FDADFFF call 00402EC8 00605429 . 83F8 28 cmp eax, 28 0060542C . 7F 06 jg short 00605434 0060542E . 837D EC 63 cmp dword ptr [ebp-14], 63 00605432 . 75 4F jnz short 00605483 00605434 > 8D4D D8 lea ecx, [ebp-28] 00605437 . BA C0576000 mov edx, 006057C0 0060543C . 8B45 F0 mov eax, [ebp-10] 0060543F . E8 B426F4FF call 00547AF8 00605444 . 8B55 D8 mov edx, [ebp-28] 00605447 . 8D45 F0 lea eax, [ebp-10] 0060544A . E8 A1F0DFFF call 004044F0 0060544F . 8B45 F0 mov eax, [ebp-10] 00605452 . 8B55 F4 mov edx, [ebp-C] 00605455 . E8 0AF4DFFF call 00404864 0060545A . 75 27 jnz short 00605483 0060545C . 8D45 D4 lea eax, [ebp-2C] 0060545F . 8B4D F4 mov ecx, [ebp-C] 00605462 . 33D2 xor edx, edx 00605464 . E8 FBF2DFFF call 00404764 00605469 . 8B55 D4 mov edx, [ebp-2C] 0060546C . 8B45 FC mov eax, [ebp-4] 0060546F . 8B80 5C030000 mov eax, [eax+35C] 00605475 . E8 5E32E6FF call 004686D8 0060547A . C605 282D6100>mov byte ptr [612D28], 1 00605481 . EB 09 jmp short 0060548C 00605483 > FF45 EC inc dword ptr [ebp-14] 00605486 . 837D EC 64 cmp dword ptr [ebp-14], 64 0060548A .^ 75 93 jnz short 0060541F 0060548C > 33C0 xor eax, eax 0060548E . 5A pop edx 0060548F . 59 pop ecx 00605490 . 59 pop ecx 00605491 . 64:8910 mov fs:[eax], edx 00605494 . EB 0A jmp short 006054A0 00605496 .^ E9 4DE6DFFF jmp 00403AE8 0060549B . E8 B0E9DFFF call 00403E50 006054A0 > 33C0 xor eax, eax 006054A2 . 8945 EC mov [ebp-14], eax 006054A5 > B8 32000000 mov eax, 32 006054AA . E8 19DADFFF call 00402EC8 006054AF . 83F8 0A cmp eax, 0A 006054B2 . 7E 18 jle short 006054CC 006054B4 . 8B55 F4 mov edx, [ebp-C] 006054B7 . B8 D4576000 mov eax, 006057D4 006054BC . E8 9BF5DFFF call 00404A5C 006054C1 . 85C0 test eax, eax 006054C3 . 7E 07 jle short 006054CC 006054C5 . C605 282D6100>mov byte ptr [612D28], 0 006054CC > FF45 EC inc dword ptr [ebp-14] 006054CF 837D EC 64 cmp dword ptr [ebp-14], 64 006054D3 ^ 75 D0 jnz short 006054A5 006054D5 803D 282D6100>cmp byte ptr [612D28], 0 006054DC 75 13 jnz short 006054F1 006054DE . 8B45 FC mov eax, [ebp-4] 006054E1 . 8B80 5C030000 mov eax, [eax+35C] 006054E7 . BA E8576000 mov edx, 006057E8 ; ASCII " Trials version" 006054EC . E8 E731E6FF call 004686D8 006054F1 > EB 06 jmp short 006054F9 006054F3 >^ EB FC jmp short 006054F1 006054F5 .^ EB FC jmp short 006054F3 上面是完整的验证算法,算法应该不会很难,我懒得分析了,谁要是有兴趣就分析看看。所以就直接爆破搞起。 看到mov byte ptr [612D28], 0这个没? 内存位置612D28是关键,把这个内存值置为1,就完美爆破了。 我们找一个地方修改下: 006054CF 837D EC 64 cmp dword ptr [ebp-14], 64 就把这条语句改为: mov byte ptr [612D28], 1 保存下来,ok,完美爆破成功了!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zxsword机器人#1 · 2010/12/6
哇咔咔,崇拜jmpesp大牛
wks机器人#2 · 2010/12/6
赞技术!
FadeToBlack机器人#3 · 2010/12/6
大牛你好 有款游戏屏蔽了后台键盘消息,该怎么办?跟了下,只有一次调用GetActiveWindow 而且据说设置Active/focus/mouse capture之后再发键盘消息都不好使,有啥思路没?给点提示吧 要不就没法一边工作一边练级了,尤其是练小号
jmpesp机器人#4 · 2010/12/6
【 在 FadeToBlack 的大作中提到: 】 : 大牛你好 : 有款游戏屏蔽了后台键盘消息,该怎么办?跟了下,只有一次调用GetActiveWindow : 而且据说设置Active/focus/mouse capture之后再发键盘消息都不好使,有啥思路没?给点提示吧 : ................... 对windows api不熟 是不是hook掉相应消息了 就在SetWindowsHookEx 或者 SetWindowsHook下断看看设置了啥钩子函数?
FadeToBlack机器人#5 · 2010/12/6
不应该啊... 既然消息发过去了,hook了会起什么作用? 【 在 jmpesp (心爱走天涯 ) 的大作中提到: 】 : 对windows api不熟 是不是hook掉相应消息了 : 就在SetWindowsHookEx 或者 SetWindowsHook下断看看设置了啥钩子函数?
jmpesp机器人#6 · 2010/12/6
【 在 FadeToBlack 的大作中提到: 】 : 不应该啊... 既然消息发过去了,hook了会起什么作用? 但你发过来的时候 我可以不处理呀 比如吧 判断下当前是否在后台运行 如果是的话 这时候的键盘消息我就不处理了
jmpesp机器人#7 · 2010/12/6
我觉得这时候有两种情况考虑: (1)如果键盘消息已经到达本程序了,这时候应该在消息处理函数下文章,找到WndProc中相应的键盘消息处理分支看看 (2)如果键盘消息没到程序的话,那肯定被hook掉了
FadeToBlack机器人#8 · 2010/12/6
可以确定是第一条了...就是懒得去读汇编 【 在 jmpesp (心爱走天涯 ) 的大作中提到: 】 : 我觉得这时候有两种情况考虑: : (1)如果键盘消息已经到达本程序了,这时候应该在消息处理函数下文章,找到WndProc中相应的键盘消息处理分支看看 : (2)如果键盘消息没到程序的话,那肯定被hook掉了 : ...................
guozi机器人#9 · 2010/12/6
太nb了! 【 在 jmpesp (心爱走天涯 ) 的大作中提到: 】 : 重要声明! : 本文纯属学习交流之用,由本文所造成的一切法律纠纷均与作者本人无关! : 最近在忙着写毕业论文,就到网上搜下有没有直接从源代码生成流程图的软件,搜索的结果是一款叫AutoFlowchart的软件可以做到,但是共享软件,需要注册,不然有功能限制——无法把生成图保存为visio等占用格式,还会在关闭之间弹出nag提醒注册。本来是想看看网上有没有它� : ...................