- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
SPX Bundle = Instant Screen Capture + Graphic Editor + Studio
File Version 5.0,2.0,2.1
File Size : aprox 7.02MB
OS : Windows 9x/NT/ME/2000/XP/2003
软件介绍:
SPX Bundle是Instant Screen Capture + Graphic Editor + Studio三款工具的集合包.SPXInstantScreenCapture是一个功能强大的屏幕图像捕捉程序,支持鼠标和快捷键两种捕捉方式,支持任意图形,长方形,窗口,整个桌面四种捕捉范围,捕捉后的图片可以直接复制到剪贴板,保存为文件,用Email发给朋友,通过内置的FTP软件上传到网站,发送给图像编辑工具进行编辑修改,或者发送给打印机或者传真机,程序还具有在设定的时间间隔内连续捕捉和对捕捉的图片进行发大缩小的功能。Graphic Editor 的图片的编辑修改工具. SPX Studio则可以为我们截取的图片添加文字说明.
Homepage:http://www.moodysoft.com/download.html
Download:http://www.moodysoft.com/spx/spxsetup.exe
输入注册信息:
User Name: Nisy
ProductID: ChinaPYG
下PB MessageBoxA 断点 或是 搜索ASCII关键字符均可。
004A75F4=004A75F4 (ASCII "Thank you for registering ")
004A761C=004A761C (ASCII "Invalid User Name or Product ID. Please try again.")
004CBA97 |. FF93 38030000 call dword ptr [ebx+338] ; 我们在此下断,F7跟进分析
004CBA9D |. 84C0 test al, al ; 标志位比较
004CBA9F |. 74 65 je short 004CBB06 ; 关键跳转 AL返回值为0则跳向注册失败
004CBAA1 |. 6A 30 push 30
004CBAA3 |. 8D55 E8 lea edx, dword ptr [ebp-18]
004CBAA6 |. A1 1C074F00 mov eax, dword ptr [4F071C]
004CBAAB |. 8B00 mov eax, dword ptr [eax]
004CBAAD |. E8 2A00FAFF call 0046BADC
004CBAB2 |. 8B45 E8 mov eax, dword ptr [ebp-18]
004CBAB5 |. E8 1E90F3FF call 00404AD8
004CBABA |. 50 push eax
004CBABB |. 68 C8BB4C00 push 004CBBC8 ; thank you for registering
F7跟进算法CALL
004CB278 /$ 55 push ebp
004CB279 |. 8BEC mov ebp, esp
004CB27B |. 6A 00 push 0
004CB27D |. 6A 00 push 0
004CB27F |. 6A 00 push 0
…………
…………
004CB37E |. 8B45 F0 mov eax, dword ptr [ebp-10]
004CB381 |. 8B55 EC mov edx, dword ptr [ebp-14]
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al ; 这里对AL标志位进行修改
004CB38C |. 8843 34 mov byte ptr [ebx+34], al ; 将AL数值放[ebx+34]中
004CB38F |. 807B 34 00 cmp byte ptr [ebx+34], 0 ; [ebx+34]的数值与0比较
004CB393 |. 74 34 je short 004CB3C9 ; [ebx+34]为0则跳走
004CB395 |. 8D43 40 lea eax, dword ptr [ebx+40]
004CB398 |. 8B55 FC mov edx, dword ptr [ebp-4]
004CB39B |. B9 FF000000 mov ecx, 0FF
004CB3A0 |. E8 1795F3FF call 004048BC
004CB3A5 |. 8D83 40010000 lea eax, dword ptr [ebx+140]
004CB3AB |. 8B55 F8 mov edx, dword ptr [ebp-8]
004CB3AE |. B9 FF000000 mov ecx, 0FF
004CB3B3 |. E8 0495F3FF call 004048BC
004CB3B8 |. 807D 08 00 cmp byte ptr [ebp+8], 0
004CB3BC |. 74 07 je short 004CB3C5
004CB3BE |. 8BC3 mov eax, ebx
004CB3C0 |. E8 0B020000 call 004CB5D0
004CB3C5 |> C645 F7 01 mov byte ptr [ebp-9], 1
004CB3C9 |> 33C0 xor eax, eax ; EAX清零
004CB3CB |. 5A pop edx
004CB3CC |. 59 pop ecx
004CB3CD |. 59 pop ecx
004CB3CE |. 64:8910 mov dword ptr fs:[eax], edx
004CB3D1 |. 68 F8B34C00 push 004CB3F8
004CB3D6 |> 8D45 E4 lea eax, dword ptr [ebp-1C]
004CB3D9 |. BA 04000000 mov edx, 4
004CB3DE |. E8 6992F3FF call 0040464C
004CB3E3 |. 8D45 F8 lea eax, dword ptr [ebp-8]
004CB3E6 |. BA 02000000 mov edx, 2
004CB3EB |. E8 5C92F3FF call 0040464C
004CB3F0 \. C3 retn
004CB3F1 .^\E9 B68BF3FF jmp 00403FAC
004CB3F6 .^ EB DE jmp short 004CB3D6
004CB3F8 . 8A45 F7 mov al, byte ptr [ebp-9] ; 通过上文的学习,我们知道我们这里是设置AL标志位的一个关键点
004CB3FB . 5F pop edi
004CB3FC . 5E pop esi
004CB3FD . 5B pop ebx
004CB3FE . 8BE5 mov esp, ebp
004CB400 . 5D pop ebp
004CB401 . C2 0400 retn 4
我们先来总结一下之前学到的标志位暴破修改思路:
01.
mov al,1 ;直接对AL赋值为1
retn ;返回时 AL值为1
02.
xor eax, eax ;EAX清零
inc eax ;EAX加1
retn ;返回时 AL值为1
而这个软件是sete语句设置了AL标志位,sete语句作用如下(感谢飘云对sete的讲解)
mov eax, dword ptr [ebp-8] //参数1
mov edx, dword ptr [ebp-C] //参数2
call 00405194 //关键比较
sete al //参数1=参数2--->>设置al=1 否则al=0
根据该语句的所以我们就有如下的修改方案:
修改方案1
004CB37E |. 8B45 F0 mov eax, dword ptr [ebp-10] //参数1 [ebp-10]修改为[ebp-14]
004CB381 |. 8B55 EC mov edx, dword ptr [ebp-14] //参数2 或[ebp-14]修改为[ebp-10]
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al
修改方案2
004CB37E |. 8B45 F0 mov eax, dword ptr [ebp-10]
004CB381 |. 8B55 EC mov edx, dword ptr [ebp-14]
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al //将sete al 修改为setne al (sete al //参数1=参数2--->>al=0 否则al=1)<感谢rayicy补充>
修改方案3:
004CB37E |. 8B45 F0 mov eax, dword ptr [ebp-10]
004CB381 |. 8B55 EC mov edx, dword ptr [ebp-14]
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al //将sete al 修改为:mov al,1
软件的注册信息保存在:C:\WINDOWS\system32\odbc32.crc 这个文件中,我们删除该文件后继续分析。
如果我们不修改sete对标志位的修改,用之前我们学到的标志位暴破是否可行.我们就从CALL尾部的这个赋值语句入手:
004CB3F8 . 8A45 F7 mov al, byte ptr [ebp-9]
软件在此进行了AL标志位的赋值。我们把这里修改为mov al, 1 保存文件后,运行,发现软件仍然弹出对话框窗口。Why?我们OD载入该文件,在004CB37E算法CALL这下断继续分析。软件启动时再次调用算法CALL来判断软件保存的注册信息是否正确,我们F8单步一路向下。
004CB597 . 84C0 test al, al ; 退出算法CALL后来到这里:
004CB599 . 75 08 jnz short 004CB5A3
004CB59B . 8B45 FC mov eax, dword ptr [ebp-4]
004CB59E . E8 2D000000 call 004CB5D0
004CB5A3 > 33C0 xor eax, eax
004CB5A5 . 5A pop edx
004CB5A6 . 59 pop ecx
004CB5A7 . 59 pop ecx
004CB5A8 . 64:8910 mov dword ptr fs:[eax], edx
004CB5AB . 68 C5B54C00 push 004CB5C5
004CB5B0 > 8D45 F4 lea eax, dword ptr [ebp-C]
004CB5B3 . BA 02000000 mov edx, 2
004CB5B8 . E8 8F90F3FF call 0040464C
004CB5BD . C3 retn
004CB5BE .^ E9 E989F3FF jmp 00403FAC
004CB5C3 .^ EB EB jmp short 004CB5B0
004CB5C5 . 5F pop edi
004CB5C6 . 5E pop esi
004CB5C7 . 5B pop ebx
004CB5C8 . 8BE5 mov esp, ebp
004CB5CA . 5D pop ebp ; 0012FDEC
004CB5CB . C3 retn
004CAFDF |. 807B 34 00 cmp byte ptr [ebx+34], 0 ; 返回到这里
004CAFE3 |. 0F85 9F010000 jnz 004CB188 ; 这里跳走则注册成功
004CAFE9 |. 83BB 50020000>cmp dword ptr [ebx+250], 0
004CAFF0 |. 74 0A je short 004CAFFC
软件启动时候经过算法CALL,除了判断注册码是否正确,还返回了[ebx+34]的数值,如果[ebx+34]等于1则不弹出注册对话框,而[ebx+34]这个数值又是从何而来呢?我们再回来看下sete设置标志位时候的动作:
004CB37E |. 8B45 F0 mov eax, dword ptr [ebp-10]
004CB381 |. 8B55 EC mov edx, dword ptr [ebp-14]
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al ; 这里对AL标志位进行修改
004CB38C |. 8843 34 mov byte ptr [ebx+34], al ; 将AL数值放[ebx+34]中 // 呵呵,以来是这里对[ebx+34]进行了赋值
004CB38F |. 807B 34 00 cmp byte ptr [ebx+34], 0 ; [ebx+34]的数值与0比较
004CB393 |. 74 34 je short 004CB3C9 ; [ebx+34]为0则跳走
那我们将这样修改是否可行?
修改第1处:
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al
004CB38C |. 8843 34 mov byte ptr [ebx+34], al
004CB38F |. 807B 34 00 cmp byte ptr [ebx+34], 0
004CB393 |. 74 34 je short 004CB3C9 ; 把这里NOP掉 使其实现对[ebp-9]的赋值和向系统写入注册信息。
修改第2处:
004CAFDF |. 807B 34 00 cmp byte ptr [ebx+34], 0 ; 退出上一个retn后返回到这里(这里将0修改为1)
004CAFE3 |. 0F85 9F010000 jnz 004CB188 ; 这里跳走则注册成功 (或是这里将jnz修改为jz)
然后我们运行软件,看到软件还有Buy Now的选项,为什么?
这说明[ebx+34]的数值在其他地方还做了检验。所以如果我们暴破的话就要对[ebx+34]做做手脚。我这里有一种思路,仅供大家参考。
004CB37E |. 8B45 F0 mov eax, dword ptr [ebp-10]
004CB381 |. 8B55 EC mov edx, dword ptr [ebp-14]
004CB384 |. E8 9B96F3FF call 00404A24
004CB389 |. 0F94C0 sete al
004CB38C |. 8843 34 mov byte ptr [ebx+34], al
004CB38F |. 807B 34 00 cmp byte ptr [ebx+34], 0
004CB393 90 nop ; 第1处修改:这里我们NOP掉
004CB394 90 nop
004CB395 |. 8D43 40 lea eax, dword ptr [ebx+40]
004CB398 |. 8B55 FC mov edx, dword ptr [ebp-4]
004CB39B |. B9 FF000000 mov ecx, 0FF
004CB3A0 |. E8 1795F3FF call 004048BC
004CB3A5 |. 8D83 40010000 lea eax, dword ptr [ebx+140]
004CB3AB |. 8B55 F8 mov edx, dword ptr [ebp-8]
004CB3AE |. B9 FF000000 mov ecx, 0FF
004CB3B3 |. E8 0495F3FF call 004048BC
004CB3B8 |. 807D 08 00 cmp byte ptr [ebp+8], 0
004CB3BC |. 74 07 je short 004CB3C5 ; 这里千万不能跳,WHY/?
004CB3BE |. 8BC3 mov eax, ebx
004CB3C0 |. E8 0B020000 call 004CB5D0 ; 这个CALL向系统写入我们输入的注册信息(F7跟进看看就明白了)
004CB3C5 |> C643 34 01 mov byte ptr [ebx+34], 1 ; 第2处修改:我们在这里将1赋值给[ebx+34] 呵呵
004CB3C9 |> 33C0 xor eax, eax
004CB3CB |. 5A pop edx
004CB3CC |. 59 pop ecx
004CB3CD |. 59 pop ecx
004CB3CE |. 64:8910 mov dword ptr fs:[eax], edx
004CB3D1 |. 68 F8B34C00 push 004CB3F8
004CB3D6 |> 8D45 E4 lea eax, dword ptr [ebp-1C]
004CB3D9 |. BA 04000000 mov edx, 4
004CB3DE |. E8 6992F3FF call 0040464C
004CB3E3 |. 8D45 F8 lea eax, dword ptr [ebp-8]
004CB3E6 |. BA 02000000 mov edx, 2
004CB3EB |. E8 5C92F3FF call 0040464C
004CB3F0 \. C3 retn
004CB3F1 .^ E9 B68BF3FF jmp 00403FAC
004CB3F6 .^ EB DE jmp short 004CB3D6
004CB3F8 . B0 01 mov al, 1 ; 第3处修改:这里对AL赋值为1
004CB3FA . 90 nop
004CB3FB . 5F pop edi
004CB3FC . 5E pop esi
004CB3FD . 5B pop ebx
004CB3FE . 8BE5 mov esp, ebp
004CB400 . 5D pop ebp
004CB401 . C2 0400 retn 4
补充上暴破思路三:菜儿对Instant Screen Capture 绿色版的暴破:
1.修改以下三处即可暴破:
004CB0F1 |. /EB 25 JMP SHORT spx.004CB118
004CB0F3 |> |4F DEC EDI
004CB0F4 |. |75 12 JNZ SHORT spx.004CB108
004CB0F6 |. |BA 30B24C00 MOV EDX,spx.004CB230 ; 1 day remaining.
004CB0FB |. |8B86 FC020000 MOV EAX,DWORD PTR DS:[ESI+2FC]
004CB101 |. |E8 9609F8FF CALL spx.0044BA9C
004CB106 |. |EB 10 JMP SHORT spx.004CB118
004CB108 |> |BA 4CB24C00 MOV EDX,spx.004CB24C ; 0 days remaining.
004CB10D |. |8B86 FC020000 MOV EAX,DWORD PTR DS:[ESI+2FC]
004CB113 |. |E8 8409F8FF CALL spx.0044BA9C
004CB118 |> \83BB 50020000>CMP DWORD PTR DS:[EBX+250],0
004CB11F |. 75 56 JNZ SHORT spx.004CB177
004CB121 |. 8B86 00030000 MOV EAX,DWORD PTR DS:[ESI+300]
004CB127 |. 8B40 68 MOV EAX,DWORD PTR DS:[EAX+68]
004CB12A |. 8A15 60B24C00 MOV DL,BYTE PTR DS:[4CB260]
004CB130 |. E8 EBD1F5FF CALL spx.00428320
004CB135 |. BA 6CB24C00 MOV EDX,spx.004CB26C ; close
004CB13A |. 8B86 00030000 MOV EAX,DWORD PTR DS:[ESI+300]
004CB140 |. E8 5709F8FF CALL spx.0044BA9C
004CB145 |. 8B86 04030000 MOV EAX,DWORD PTR DS:[ESI+304]
004CB14B |. 8B40 68 MOV EAX,DWORD PTR DS:[EAX+68]
004CB14E |. 8A15 74B24C00 MOV DL,BYTE PTR DS:[4CB274]
004CB154 |. E8 C7D1F5FF CALL spx.00428320
004CB159 |. 66:BA 0100 MOV DX,1
004CB15D |. 8B86 04030000 MOV EAX,DWORD PTR DS:[ESI+304]
004CB163 |. E8 B071F8FF CALL spx.00452318
004CB168 |. 66:BA 0200 MOV DX,2
004CB16C |. 8B86 00030000 MOV EAX,DWORD PTR DS:[ESI+300]
004CB172 |. E8 A171F8FF CALL spx.00452318
004CB177 |> 8BC6 MOV EAX,ESI
004CB179 |. 8B10 MOV EDX,DWORD PTR DS:[EAX]
004CB17B |. FF92 E8000000 CALL DWORD PTR DS:[EDX+E8] nop去掉注册对话框
0041F1F0 |. /75 41 JNZ SHORT spx.0041F233 nop去掉(让时间永远是15天)
0041F1F2 |. |8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0041F1F5 |. |8BC6 MOV EAX,ESI
0041F1F7 |. |E8 909FFEFF CALL spx.0040918C
0041F1FC |. |8BC8 MOV ECX,EAX
0041F1FE |. |33D2 XOR EDX,EDX
0041F200 |. |8BC3 MOV EAX,EBX
0041F202 |. |E8 BDFEFFFF CALL spx.0041F0C4
0041F207 |. |837B 04 00 CMP DWORD PTR DS:[EBX+4],0
0041F20B |. |7D 65 JGE SHORT spx.0041F272
0041F20D |. |8975 F4 MOV DWORD PTR SS:[EBP-C],ESI
0041F210 |. |C645 F8 0B MOV BYTE PTR SS:[EBP-8],0B
0041F214 |. |8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0041F217 |. |50 PUSH EAX
0041F218 |. |6A 00 PUSH 0
0041F21A |. |8B0D D8074F00 MOV ECX,DWORD PTR DS:[4F07D8] ; spx.0041849C
0041F220 |. |B2 01 MOV DL,1
0041F222 |. |A1 2C964100 MOV EAX,DWORD PTR DS:[41962C]
0041F227 |. |E8 00D6FEFF CALL spx.0040C82C
0041F22C |. |E8 B34DFEFF CALL spx.00403FE4
0041F231 |. |EB 3F JMP SHORT spx.0041F272
0041F233 |> \0FB7D7 MOVZX EDX,DI
0041F236 |. 8BC6 MOV EAX,ESI
0041F238 |. E8 CF9EFEFF CALL spx.0040910C
004CC22F 83BB 3C030000>CMP DWORD PTR DS:[EBX+33C],0 改为:CMP DWORD PTR DS:[EBX+33C],1 去掉关于的注册框
004CC236 . 0F84 DC000000 JE spx.004CC318
004CC23C 83BB 40030000>CMP DWORD PTR DS:[EBX+340],0 改为:CMP DWORD PTR DS:[EBX+33C],1 去掉关于的注册框
004CC243 . 0F84 CF000000 JE spx.004CC318
004CC249 . 33D2 XOR EDX,EDX
004CC24B . 8B83 30030000 MOV EAX,DWORD PTR DS:[EBX+330]
004CC251 . E8 36F7F7FF CALL spx.0044B98C
004CC256 . BA 24C34C00 MOV EDX,spx.004CC324 ; this product is licensed.
004CC25B . 8B83 20030000 MOV EAX,DWORD PTR DS:[EBX+320]
004CC261 . E8 36F8F7FF CALL spx.0044BA9C
2.制作绿色版,让软件自显注册信息.
本想从最下方找一个空地,结果那个地址还有用,这里就偷个懒,修改软件用不到的数据了:
004CB0F6 |. BA 30B24C00 mov edx, 004CB230 ; 1 day remaining.
004CB0FB |. 8B86 FC020000 mov eax, dword ptr [esi+2FC]
004CB101 |. E8 9609F8FF call 0044BA9C
004CB106 |. EB 10 jmp short 004CB118
004CB108 |> BA 4CB24C00 mov edx, 004CB24C ; 0 days remaining.
004CB230 把这里的数据修改为 ChinaPYG
004CB24C 把这里的数据修改为 Bbs.ChinaPYG.Com
然后使其赋值:
004CC22F C783 3C030000>mov dword ptr [ebx+33C], 004CB230 ; ASCII "ChinaPYG "
004CC239 90 nop
004CC23A 90 nop
004CC23B 90 nop
004CC23C C783 40030000>mov dword ptr [ebx+340], 004CB24C ; ASCII "Bbs.ChinaPYG.Com"
004CC246 90 nop
004CC247 90 nop
004CC248 90 nop
3.去掉Buy Now 的选项
分析应该是软件开始调用算法CALL时候对AL数值的问题和[ebx+32]数值的问题
故再添加以下修改:
004CB2DA |. C643 34 01 mov byte ptr [ebx+34], 1
如此一来软件连向系统写入注册信息都懒的去做了,完美暴破绿色版,呵呵~ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|