某切图之星的追码过程
软件介绍: 1. 可以一次打开多张图片,然后分别对每张图片进行处理。2. 裁切框可以任意调整大小和位置,支持用键盘微调;也可以锁定裁切框的大小,这样裁切出来的图片尺寸都是一样大的。
3. 支持多种常见的图片文件格式,如JPEG、JPG、PNG、GIF、BMP。
4. 支持 “捕捉屏幕” 功能,并支持热键抓图,这样就可以直接将屏幕上的内容抓下来切图了,免去了先用抓图软件抓下来保存,再打开文件的繁琐操作。
5. 与 “淘淘图片拼接之星” 软件无缝集成,可以方便快速的将切出来的小图拼接在一起。
6. 支持将原图片进行向左或向右微量旋转。
首先我们来运行程序看下他的注册流程:
输入假码,会有错误弹窗
我们来查下壳 :
一看软件的壳居然是vmp 有木有吓一跳啊。。。。。。。。。。。。 但我们今天就带壳调试他
程序直接拖入OD运行起来 ,先下个弹窗api函数断点 bp MessageBoxW
输入假码 程序自然会断下来
这时我们就F8单步走 一直找到可以跳过弹窗call的跳转
在跳转的上面一个call下断,重新载入程序,由于程序带壳 我们的断点自然会被禁止,
上面可以看到下断点部分还没有解码,此时运行程序,然后激活断点,输入假码,程序就会停在我们之前下断的call处
F7单步跟进去,这里面有一个简单的算法验证call
这里我把代码粘贴了出来 :
00592AD8 55 push ebp
00592AD9 8BEC mov ebp,esp
00592ADB 6A 00 push 0x0
00592ADD 6A 00 push 0x0
00592ADF 6A 00 push 0x0
00592AE1 53 push ebx
00592AE2 33C0 xor eax,eax
00592AE4 55 push ebp
00592AE5 68 7D2B5900 push PhotoCro.00592B7D
00592AEA 64:FF30 push dword ptr fs:
00592AED 64:8920 mov dword ptr fs:,esp
00592AF0 33DB xor ebx,ebx
00592AF2 A0 902B5900 mov al,byte ptr ds:
00592AF7 50 push eax
00592AF8 8D45 FC lea eax,dword ptr ss:
00592AFB 50 push eax
00592AFC 8D45 F8 lea eax,dword ptr ss:
00592AFF 8A15 801F7800 mov dl,byte ptr ds:
00592B05 E8 8A2AE7FF call PhotoCro.00405594
00592B0A 8B45 F8 mov eax,dword ptr ss:
00592B0D 50 push eax
00592B0E 8D45 F4 lea eax,dword ptr ss:
00592B11 8B55 08 mov edx,dword ptr ss:
00592B14 E8 CB2AE7FF call PhotoCro.004055E4
00592B19 8B45 F4 mov eax,dword ptr ss:
00592B1C 8B0D 68287B00 mov ecx,dword ptr ds: ; PhotoCro.007737FC
00592B22 8B09 mov ecx,dword ptr ds:
00592B24 5A pop edx ; 0012EEA4
00592B25 E8 0632E8FF call PhotoCro.00415D30 ; 将假码连接起来,去掉之间的-
00592B2A 8B45 FC mov eax,dword ptr ss:
00592B2D E8 662BE7FF call PhotoCro.00405698 ; 获取假码的位数
00592B32 83F8 02 cmp eax,0x2
00592B35 7C 2B jl short PhotoCro.00592B62
00592B37 8B55 FC mov edx,dword ptr ss:
00592B3A 8A5C02 FF mov bl,byte ptr ds:
00592B3E 8D55 FC lea edx,dword ptr ss:
00592B41 B9 01000000 mov ecx,0x1
00592B46 92 xchg eax,edx
00592B47 E8 EC2DE7FF call PhotoCro.00405938 ; 这个call的功能就是 取假码最后一位给bl
00592B4C 8B45 FC mov eax,dword ptr ss:
00592B4F E8 F862FDFF call PhotoCro.00568E4C ; 算法部分
00592B54 83C0 30 add eax,0x30 ; eax的值加上30
00592B57 33D2 xor edx,edx ; 清空edx
00592B59 8AD3 mov dl,bl ; 将假码最后一位给 dl
00592B5B 3BC2 cmp eax,edx ; 判断eax和 edx的值是否相等,,,这里我们要让他相等(eax 就是刚才的余数加上30的值,而edx就是假码的最后一位)
00592B5D 0f94c0 sete al 将z标志位的值给al
00592B60 8BD8 mov ebx,eax
00592B62 33C0 xor eax,eax
00592B64 5A pop edx ; 0012EEA4
00592B65 59 pop ecx ; 0012EEA4
00592B66 59 pop ecx ; 0012EEA4
00592B67 64:8910 mov dword ptr fs:,edx
00592B6A 68 842B5900 push PhotoCro.00592B84
00592B6F 8D45 F4 lea eax,dword ptr ss:
00592B72 BA 03000000 mov edx,0x3
00592B77 E8 5428E7FF call PhotoCro.004053D0
00592B7C C3 retn
看到上面有一个算法call(我注释了) 我们跟进去 看看他干了啥
00568E4A 8BC0 mov eax,eax
00568E4C 53 push ebx
00568E4D 56 push esi
00568E4E 8BF0 mov esi,eax
00568E50 33DB xor ebx,ebx
00568E52 8BC6 mov eax,esi
00568E54 8B15 68287B00 mov edx,dword ptr ds: ; PhotoCro.007737FC
00568E5A 8B12 mov edx,dword ptr ds:
00568E5C E8 83C9E9FF call PhotoCro.004057E4 ; 取现在的假码位数给eax(刚才上面有一个call把假码最后一位去掉并给了bl)
00568E61 74 28 je short PhotoCro.00568E8B
00568E63 8BC6 mov eax,esi
00568E65 E8 2EC8E9FF call PhotoCro.00405698
00568E6A 85C0 test eax,eax ; 判断假码位数是否为零 为零的话就跳走了
00568E6C 7E 11 jle short PhotoCro.00568E7F
00568E6E BA 01000000 mov edx,0x1 ; edx赋值为1
00568E73 33C9 xor ecx,ecx ; 清空ecx
00568E75 8A4C16 FF mov cl,byte ptr ds: ; 假码第一位给 cl
00568E79 03D9 add ebx,ecx ; edx+ecx
00568E7B 42 inc edx
00568E7C 48 dec eax
00568E7D^ 75 F4 jnz short PhotoCro.00568E73 ; 这个循环总结下就是假码依次相加并将相加的结果放在ebx中
00568E7F 8BC3 mov eax,ebx ; 将ebx的值(就是假码依次(除去最后一位)依次相加的结果)给eax
00568E81 B9 09000000 mov ecx,0x9 ; ecx赋值为9
00568E86 99 cdq ; 进行符号为扩展,目前是将edx赋值为0
00568E87 F7F9 idiv ecx ; eax除以ecx
00568E89 8BDA mov ebx,edx ; 上述相除的余数给ebx
00568E8B 8BC3 mov eax,ebx ; 将ebx的值给eax
00568E8D 5E pop esi ;
00568E8E 5B pop ebx ;
00568E8F C3 retn
这里就总结下,这个程序有两种验证方式, 一种是在线验证,一种是离线验证。
在线验证部分 他会先简单验证下假码是否符合要求,然后再把数据上传至服务器 进行判断,然后把新的激活码发送到你填入的邮箱里面。
我们这里看他的离线验证部分
假码的简单要求就是 必须有25位且其中空格不算(这一部分的代码我没有贴出来,就在上面的那个弹窗call上面),前24位对应于ascll码的16进制数相加的和除以9的余数,这个余数加上30的值必须与假码的最后一位相等 (我这里输入的是12345 56789 90123 34567 78906)
这里我们输入一组符合假码简单要求的一组数据 然后运行程序
**** Hidden Message *****
把这个注册码输入,看下程序是否注册成功?
OK,程序已经注册了。
分析的很细致,精华走一个,再接再厉!
你学习也很认真,希望保持下去!
Shark恒 发表于 2017-7-13 16:21
分析的很细致,精华走一个,再接再厉!
你学习也很认真,希望保持下去!
谢谢恒叔{:6_225:} 学习自己不会的,谢谢 很好,谢谢 学习下方法,多谢分享。 多谢楼主分享。 多谢分享,写得详细,学习了。 好久没看到追码新帖子了=-= 谢谢楼主分享