软件名:电子警察闯红灯检测系统
处理方式:爆破
日期:2011-3-16
爆破使用总时间:10分钟到..注册机我就不写了,没必要
转载请注明:看雪 nonoxx原创...
好吧,这个是某交警队现在在使用的摄像头车辆违规拍照程序..听说是某大学教授写的.嘛,那边不管了也就找到了我处理它..
来句题外话,我以为朋友没问题,他说出钱让我破掉那注册码,结果我把破好的程序给他,他连钱也没给我,BS..还GOV公务员..
接下来正题,其实破它很简单,关键是那边没给我视频卡设备,软件打开不断弹错也要处理..
OK,直接打开,主板响3下,错误
先把错误强跳掉,不然麻烦..
错误框提示:
Access violation at address 00000000. Read of address 00000000.
啊,OD跑一下,看记录:
Log data, 条目 0
消息=访问违规: 正在执行 [00000000]
喂喂..没地址提示..搞什么飞机呢....
没想到更好的方法,用个土办法.
就是....在OD加载程序后按F8,不断单步步过..当步过到哪个CALL后弹提示框后,记住那个CALL,下断,重载程序F7跟进,继续F8分析..
(这招有提示成功率99%)
就那样,我找到了:
004053EF |. E8 56F7FFFF call 00404B4A
004053F4 |. FF75 08 push dword ptr [ebp+8]
004053F7 |. FF15 D8564800 call dword ptr [4856D8]
004053FD |. 5D pop ebp
004053FE \. C2 0400 retn 4
004053EF |. E8 56F7FFFF call 00404B4A 进去,发现...
00404B4A /$ 55 push ebp
00404B4B |. 8BEC mov ebp, esp
00404B4D |. 833D 60584800>cmp dword ptr [485860], 0
00404B54 |. 75 0F jnz short 00404B65
00404B56 |. 68 10E44700 push 0047E410 ; /FileName = "OKAPI32.DLL"
00404B5B |. E8 60780700 call <jmp.&KERNEL32.LoadLibraryA> ; \LoadLibraryA
00404B60 |. A3 60584800 mov dword ptr [485860], eax
00404B65 |> 833D 60584800>cmp dword ptr [485860], 0
00404B6C |. 75 04 jnz short 00404B72
00404B6E |. 33C0 xor eax, eax
00404B70 |. 5D pop ebp
00404B71 |. C3 retn
00404B72 |> 833D 0CE44700>cmp dword ptr [47E40C], 0
00404B79 |. 0F85 0A080000 jnz 00405389
00404B7F |. 68 1CE44700 push 0047E41C ; /ProcNameOrOrdinal = "okOpenBoard"
00404B84 |. FF35 60584800 push dword ptr [485860] ; |hModule = NULL
00404B8A |. E8 95770700 call <jmp.&KERNEL32.GetProcAddress> ; \GetProcAddress
00404B8F |. A3 D8564800 mov dword ptr [4856D8], eax
啊啊...load OKAPI32.DLL 失败.没那DLL,后来我翻了一下他的驱动程序文件夹..哦,有DLL在里面..
我说写这代码的帅哥..加载DLL你检查了就不能外面也检查下么.居然直接CALL..
好吧,知道错误了,把驱动文件夹全放到程序目录好了...
复制完后再运行一次..有提示啦..
图像卡1错误:2
两次错误后..再次悲剧了..
Access violation at address 0045DF27 in module 'carApp.exe'. Read of address 00000000.
无限提示这个....猜想是读取摄像头数据驱动没有数据的悲剧结果..好吧,我们到45DF27去看看..
0045DF10 /$ 55 push ebp
0045DF11 |. 8BEC mov ebp, esp
0045DF13 |. 56 push esi
0045DF14 |. 57 push edi
0045DF15 |. 8B7D 08 mov edi, dword ptr [ebp+8]
0045DF18 |. 8BC7 mov eax, edi
0045DF1A |. 8B75 0C mov esi, dword ptr [ebp+C]
0045DF1D |. 8B4D 10 mov ecx, dword ptr [ebp+10]
0045DF20 |. 8BD1 mov edx, ecx
0045DF22 |. D1E9 shr ecx, 1
0045DF24 |. D1E9 shr ecx, 1
0045DF26 |. FC cld
0045DF27 |. F3:A5 rep movs dword ptr es:[edi], dword ptr [esi]
0045DF29 |. 8BCA mov ecx, edx
0045DF2B |. 83E1 03 and ecx, 3
0045DF2E |. F3:A4 rep movs byte ptr es:[edi], byte ptr [esi]
0045DF30 |. 5F pop edi
0045DF31 |. 5E pop esi
0045DF32 |. 5D pop ebp
0045DF33 \. C3 retn
读取错误...那我们暴力点,直接在
0045DF24 |. D1E9 shr ecx, 1
修改为xor ecx,ecx
改完点确定看看..软件跑起来了..未注册版.......
接着来关键,爆破注册...
软件界面点开始检测,然后点停止检测,手动抓拍亮了,按一下手动抓拍,没注册的不保存照片到file文件夹..我们要搞的就是这个.让
它保存...接着看看配置文件.carApp.ini 里面有个注册码
register-code=19841984295235288077
换看OD,找字符串.register-code
004033FD |. BA 49D64700 mov edx, 0047D649 ; ASCII "register-code"
00403402 |. 8D45 DC lea eax, dword ptr [ebp-24]
00403405 |. E8 6E4E0600 call 00468278
有了,还真简单....
直接向下滚,看到条件转跳语句就直接F2..为什么?因为经验告诉我的..爆破东西习惯了,哈哈..炸弹砖家.....
下断了后重载程序..其实那个函数点下面也只有两个条件转跳语句...
跑起来后断下,用逆向方式破..条件成功跳的改nop,不成功的改jmp..一刚才一个来试.
当我改第二个时.好了..
00403BF8 |. 59 pop ecx
00403BF9 |. 84C9 test cl, cl
00403BFB |. 74 50 je short 00403C4D ;改成nop
00403BFD |. 8B85 3CFFFFFF mov eax, dword ptr [ebp-C4]
00403C03 |. C680 8D030000>mov byte ptr [eax+38D], 1
00403C0A |. 66:C785 50FFF>mov word ptr [ebp-B0], 0B0
00403C13 |. BA 68D64700 mov edx, 0047D668
00403C18 |. 8D85 64FFFFFF lea eax, dword ptr [ebp-9C]
00403C1E |. E8 55460600 call 00468278
软件界面也没提示未注册版..手动抓拍看看..
OK,file文件夹保存了张2011031623130005001.jpg的图片..再重载,修改
00403BFB |. 74 50 je short 00403C4D ;改成nop
保存exe,,发了给我朋友..他测试后说好了..然后给钱我那里被他省略了..下次不管谁找我破程序我就先远程让他用用再收钱
然后才发给他..
现在ZF在用的东西也太烂了吧..钱果然被A了不少...
最后把东西传上来,这次不用问他能不能让发出去了,反正没给钱我的..
[培训]科锐逆向工程师培训第53期2025年7月8日开班!