豪迪群发2018.2.6版破解 去小尾巴
本帖最后由 枫笑九洲 于 2018-2-27 08:36 编辑1、OD载入,搜索已注册版本
005522CC|.803D 04815900>cmp byte ptr ds:,0x0 ;0改1
005522D3|.74 10 je short qqqf.005522E5
005522D5|.BA A0235500 mov edx,qqqf.005523A0 ;已注册版本
搜索 全部命令 cmp byte ptr ds:,0x0
找到的命令
地址 反汇编 注释
00551D1E cmp byte ptr ds:,0x0 ds:=00
00552078 cmp byte ptr ds:,0x0 ds:=00
005522D3 je short qqqf.005522E5 (初始 CPU 选择)
点击第一条命令进去
00551D1E|> \803D 04815900>cmp byte ptr ds:,0x0 ;改0为1
00551D25|.74 24 je short qqqf.00551D4B
00551D27|.8D4D F0 lea ecx,
转储后,再打开,显示己注册
2、去掉烦人的小尾巴
找c++和delphi按钮特征码 #740E8BD38B83????????FF93????????#并在下面的call处下断
奉上个脚本下断
mov Addr,401000
loop:
find Addr,#740E8BD38B83????????FF93????????#
cmp $RESULT,0
je Exit
add $RESULT,0A
bp $RESULT
add $RESULT,1
mov Addr,$RESULT
jmp loop
Exit:
ret
断点下好后,点击发送,断下来了
0047BFD4|.FF93 20010000 call dword ptr ds: ;F7跟进
0047BFDA|>5B pop ebx ;00E7BA78
0047BFDB\.C3 retn
F8一直向下,
005828C5|.8B45 90 mov eax, ;需要发送的文字出现
005828C8|.8D4D 94 lea ecx,
005828CB|.BA 0A000000 mov edx,0xA
005828D0|.E8 6BC1EBFF call qqqf1.0043EA40
005828D5|.8B45 94 mov eax,
继续向下
00582927|.E8 8457FFFF call qqqf1.005780B0
0058292C|.8B45 D4 mov eax,
0058292F|.33D2 xor edx,edx
我们在数据窗口可以看到处存的是我们要发送的文字,但此时已经和小尾巴连在一起了。
我们进00582927处的call看看,看能不能砍掉小尾巴,在00582927处下断,并重新点击发送
断下来后,我们锁定堆栈到ebp-2C处,然后跟进call看看
005780B0/$55 push ebp
005780B1|.8BEC mov ebp,esp
005780B3|.B9 05000000 mov ecx,0x5
005780B8|>6A 00 /push 0x0
005780BA|.6A 00 |push 0x0
005780BC|.49 |dec ecx
005780BD|.^ 75 F9 \jnz short qqqf1.005780B8
005780BF|.51 push ecx
一路向下
00578110|.FF51 1C call dword ptr ds: ;ebp-2c处出现发送内容
00578113|.E9 FE000000 jmp qqqf1.00578216
00578118|>A1 20885900 mov eax,dword ptr ds:
0057811D|.8B80 E8030000 mov eax,dword ptr ds:
此时ebp-2c处没有添加小尾巴
继续向下,一直来到:
0057827C|. /75 1F jnz short qqqf1.0057829D
0057827E|. |FF33 push dword ptr ds:
00578280|. |68 BC835700 push qqqf1.005783BC ;UNICODE "
00578285|. |A1 C0455900 mov eax,dword ptr ds:
0057828A|. |FF30 push dword ptr ds:
0057828C|. |68 CC835700 push qqqf1.005783CC ;UNICODE "
00578291|. |8BC3 mov eax,ebx
00578293|. |BA 04000000 mov edx,0x4
00578298|. |E8 0FCBE8FF call qqqf1.00404DAC
经过上面这个call后,ebp-2c处出现小尾巴,我们只要跳过这个call就好了
在0057827C处,jnz改jmp,改好后保存
再次打开软件,点发送测试,小尾巴没了。。。。。
本帖最后由 枫笑九洲 于 2018-3-1 00:16 编辑
补充;破解程序自检校:
1、找程序自检校
用delphi按钮事件下断,点插入随机字母
0048D4E8 .8B83 8C000000 mov eax,dword ptr ds:
0048D4EE .FF93 88000000 call dword ptr ds: ;断在此处,F7进去看看
0048D4F4 >5E pop esi ;0012FE24
一路向下:
00584710/.55 push ebp
00584711|.8BEC mov ebp,esp
00584713|.6A 00 push 0x0
00584715|.6A 00 push 0x0
00584717|.33C0 xor eax,eax
00584719|.55 push ebp
0058471A|.68 6C475800 push qqqf1.0058476C
0058471F|.64:FF30 push dword ptr fs:
00584722|.64:8920 mov dword ptr fs:,esp
00584725|.8D4D F8 lea ecx,
00584728|.33D2 xor edx,edx
0058472A|.B8 1E000000 mov eax,0x1E
0058472F|.E8 5405F3FF call qqqf1.004B4C88
00584734|.8B55 F8 mov edx,
00584737|.8D45 FC lea eax,
在0058472F处的call,F8步过后,我们可以发现在ebp-0x8处保存的是插入内容的地址
https://www.52pojie.cn/forum.php?mod=image&aid=1064066&size=300x300&key=ed8f2cea939af45a&nocache=yes&type=fixnone
修改后的程序
https://www.52pojie.cn/forum.php?mod=image&aid=1064067&size=300x300&key=4076f3c2dd9e2bd3&nocache=yes&type=fixnone
原程序
由上面两副图可知 004B4C88是关键call,我们进去看看,
004B4C88/$55 push ebp
004B4C89|.8BEC mov ebp,esp
004B4C8B|.51 push ecx ;在此处锁定堆栈到ebp-08处
004B4C8C|.B9 06000000 mov ecx,0x6
004B4C91|>6A 00 /push 0x0
一路向下,来到
004B4D00|.E8 CFDDF4FF call qqqf1.00402AD4
004B4D05|.8B45 F0 mov eax,
004B4D08|.8D55 F8 lea edx,
004B4D0B|.E8 38F0FFFF call qqqf1.004B3D48 ;经过这个call,ebp-8处出现一长串数字
004B4D10|.8D4D EC lea ecx,
004B4D13|.8D56 1E lea edx,dword ptr ds:
现在我们用OD打开原程序:定位到004B4D0B处,下断,然后点插入随机字母,断下来后,F8步过,
查看ebp-8处的数字
EBP-8 > 031C1BACASCII "2573761770797004"修改后的程序
EBP-8 > 03001BBCASCII "0299305083362644"原程序
我们在数据窗口定位到031C1BAC,并把里面的数字改为"0299305083362644" 试试
然后F9运行,我们可以看到乱码己经不见,程序己经正常
https://www.52pojie.cn/forum.php?mod=image&aid=1064068&size=300x300&key=17e5a803d5a091e3&nocache=yes&type=fixnone
2、修改程序
思路:我们只要保证程序在经过004B4D0B的call后,EBP-8处的那串数字为原程序即可
找一段空白代码段:
005890C0 .0000 add byte ptr ds:,al
005890C2 .0000 add byte ptr ds:,al
005890C4 .0000 add byte ptr ds:,al
005890C6 .0000 add byte ptr ds:,al
005890C8 .0000 add byte ptr ds:,al
005890CA .0000 add byte ptr ds:,al
005890CC .0000 add byte ptr ds:,al
005890CE .0000 add byte ptr ds:,al
在004B4D10处,改写程序:
004B4D0B|.E8 38F0FFFF call qqqf2.004B3D48
004B4D10|.E9 AB430D00 jmp qqqf2.005890C0 ;跳向自写代码
004B4D15|?90 nop
004B4D16|.8B03 mov eax,dword ptr ds:
005890C0 .60 pushad
005890C1 ?8B45 F8 mov eax,dword ptr ss:
005890C4 .C700 30323939 mov dword ptr ds:,0x39393230
005890CA .C740 04 33303>mov dword ptr ds:,0x30353033
005890D1 ?C740 08 38333>mov dword ptr ds:,0x36333338
005890D8 .C740 0C 32363>mov dword ptr ds:,0x34343632
005890DF ?61 popad
005890E0 .8D4D EC lea ecx,dword ptr ss:
005890E3 ?8D56 1E lea edx,dword ptr ds:
005890E6 .^ E9 2BBCF2FF jmp qqqf2.004B4D16 ;跳回原程序
嘿嘿,自检校就这样没了,不知道可不可以申个精?
有成品呀,帮我评下分呀,我要升级 想要成品 不错,感谢分享,正好使用下 学习一下 感谢大佬的分享,有用 不错,感谢分享 有没有成品呀