vienna 发表于 2009-9-15 13:55

KTH-3科泰华出入境证件数字相片采集系统(高手直接无视)

本帖最后由 vienna 于 2009-9-15 13:57 编辑

【文章标题】: KTH-3科泰华出入境证件数字相片采集系统,爆的
【文章作者】: vienna
【作者邮箱】: vienna@9.cn
【作者主页】: http://hi.baidu.com/vi_orz
【软件名称】: KTH-3科泰华出入境证件数字相片采集系统
【软件大小】: 23.1 MB
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 无
【编写语言】: Delphi
【使用工具】: od,peid
【操作平台】: xp sp2
【软件介绍】: 别人给的,应该是个照相软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
005C6F68 >55            push ebp                                 ; //程序入口
005C6F69    8BEC            mov ebp,esp
005C6F6B    83C4 F0         add esp,-10
005C6F6E    53            push ebx
005C6F6F    B8 F0695C00   mov eax,kthPhoto.005C69F0
005C6F74    E8 7300E4FF   call kthPhoto.00406FEC
005C6F79    8B1D 54C75C00   mov ebx,dword ptr ds:            ; kthPhoto.005CDC3C
005C6F7F    68 C8705C00   push kthPhoto.005C70C8                   ; kthPhoto2009
005C6F84    6A 00         push 0
005C6F86    6A 00         push 0
005C6F88    E8 2702E4FF   call kthPhoto.004071B4
005C6F8D    E8 3A03E4FF   call <jmp.&kernel32.GetLastError>
005C6F92    3D B7000000   cmp eax,0B7
005C6F97    75 20         jnz short kthPhoto.005C6FB9
005C6F99    6A 00         push 0
//基于之前在程序的目录已经找到一个KthSoft.ini文件,里面也有了我们输入的假吗,那就不折腾了,是重启验证。

//既然是ini文件,bp GetPrivateProfileStringA


运行若干次,取假码的断下来了


下面是堆栈窗口


0012F71C   00476729/CALL 到 GetPrivateProfileStringA 来自 kthPhoto.00476724
0012F720   005C6960|Section = "App"
0012F724   005C6954|Key = "SN"                     //这是ini文件存家吗的一项
0012F728   00404CA1|Default = ""
0012F72C   0012F744|ReturnBuffer = 0012F744
0012F730   00000800|BufSize = 800 (2048.)
0012F734   01578570\IniFileName = "C:\Program Files\KTH-3科泰华出入境证件数字相片采集系统\KTHSoft.INI"
0012F738   7C930228ntdll.7C930228
0012F73C   FFFFFFFF
0012F740   00474FE4kthPhoto.00474FE4


正常的。。我们返回程序领空


004766FF|.68 00080000   push 800
00476704|.8D85 00F8FFFF lea eax,
0047670A|.50            push eax
0047670B|.8B45 0C       mov eax,
0047670E|.E8 89E5F8FF   call kthPhoto.00404C9C
00476713|.50            push eax
00476714|.8BC7          mov eax,edi
00476716|.E8 81E5F8FF   call kthPhoto.00404C9C
0047671B|.50            push eax
0047671C|.8BC6          mov eax,esi
0047671E|.E8 79E5F8FF   call kthPhoto.00404C9C
00476723|.50            push eax                                 ; |Section
00476724|.E8 D30BF9FF   call <jmp.&kernel32.GetPrivateProfileStr>; \GetPrivateProfileStringA
00476729|.8BC8          mov ecx,eax                              ;//返回到这里来,下断,运行,然后慢慢跟吧
0047672B|.8D95 00F8FFFF lea edx,
00476731|.8B45 08       mov eax,
00476734|.E8 93E1F8FF   call kthPhoto.004048CC
00476739|.5F            pop edi
0047673A|.5E            pop esi
0047673B|.5B            pop ebx
0047673C|.8BE5          mov esp,ebp


//下断,运行,然后慢慢跟吧

0047673F\.C2 0800       retn 8                                 ;返回到 005C67F8 (kthPhoto.005C67F8)
//继续跟

005C67F8|.8D55 E8       lea edx,                        ;//返回到这里来
005C67FB|.33C0          xor eax,eax
005C67FD|.E8 06FEFFFF   call kthPhoto.005C6608
005C6802|.84C0          test al,al
005C6804|.75 07         jnz short kthPhoto.005C680D
005C6806|.33DB          xor ebx,ebx
005C6808|.E9 E9000000   jmp kthPhoto.005C68F6
005C680D|>8D55 D8       lea edx,
005C6810|.8B45 E8       mov eax,
005C6813|.E8 8CF9FFFF   call kthPhoto.005C61A4
005C6818|.8D45 F4       lea eax,
005C681B|.E8 BCDFE3FF   call kthPhoto.004047DC
005C6820|.BB 10000000   mov ebx,10
005C6825|.8D75 D8       lea esi,
005C6828|>8D4D CC       /lea ecx,
005C682B|.33C0          |xor eax,eax
005C682D|.8A06          |mov al,byte ptr ds:
005C682F|.BA 02000000   |mov edx,2
005C6834|.E8 C72EE4FF   |call kthPhoto.00409700
005C6839|.8B55 CC       |mov edx,
005C683C|.8D45 F4       |lea eax,
005C683F|.E8 68E2E3FF   |call kthPhoto.00404AAC
005C6844|.46            |inc esi
005C6845|.4B            |dec ebx
005C6846|.^ 75 E0         \jnz short kthPhoto.005C6828             ;//循环~~是在算机器码~~
005C6848|.8D45 F0       lea eax,
005C684B|.8B55 F4       mov edx,                        ;//下面写着堆栈 ss:=0157861C, (ASCII "F3A0F9D604A7472900814BA6333A4F5B")~~机器码


//往下跟跟~~~


005C6876|.BB 10000000   mov ebx,10
005C687B|.8D75 D8       lea esi,
005C687E|>8D4D C4       /lea ecx,
005C6881|.33C0          |xor eax,eax
005C6883|.8A06          |mov al,byte ptr ds:
005C6885|.BA 02000000   |mov edx,2
005C688A|.E8 712EE4FF   |call kthPhoto.00409700
005C688F|.8B55 C4       |mov edx,
005C6892|.8D45 F4       |lea eax,
005C6895|.E8 12E2E3FF   |call kthPhoto.00404AAC
005C689A|.46            |inc esi
005C689B|.4B            |dec ebx
005C689C|.^ 75 E0         \jnz short kthPhoto.005C687E             ;//又一个循环,是算注册码了吧,上面还有些东西我不知道干什么的
005C689E|.8B45 EC       mov eax,
005C68A1|.50            push eax                                 ; /hObject
005C68A2|.E8 D508E4FF   call <jmp.&kernel32.CloseHandle>         ; \CloseHandle
005C68A7|.8B45 F8       mov eax,
005C68AA|.8B55 F4       mov edx,                        ;//下面显示堆栈 ss:=015786AC, (ASCII "7A573272829CBA0157A3C81A45D776DD"),,,注册码了
//下面接着的是爆破位置

005C68B2   /74 40         je short kthPhoto.005C68F4               ;//一轮工作之后。。这里没有跳。。要爆破的将这里改成jmp就完事了
005C68B4|. |8B0D 3CC45C00 mov ecx,dword ptr ds:            ;kthPhoto.00675DBC
005C68BA|. |A1 54C75C00   mov eax,dword ptr ds:
005C68BF|. |8B00          mov eax,dword ptr ds:
005C68C1|. |8B15 50625C00 mov edx,dword ptr ds:            ;kthPhoto.005C629C
005C68C7|. |E8 C8CDEAFF   call kthPhoto.00473694
005C68CC|. |A1 3CC45C00   mov eax,dword ptr ds:
005C68D1|. |8B00          mov eax,dword ptr ds:
005C68D3|. |8B80 00030000 mov eax,dword ptr ds:
005C68D9|. |8B55 F0       mov edx,
005C68DC|. |E8 EB7CF0FF   call kthPhoto.004CE5CC
005C68E1|. |A1 3CC45C00   mov eax,dword ptr ds:
005C68E6|. |8B00          mov eax,dword ptr ds:
005C68E8|. |8B10          mov edx,dword ptr ds:
005C68EA|. |FF92 E8000000 call dword ptr ds:
005C68F0|. |33DB          xor ebx,ebx
005C68F2|. |EB 02         jmp short kthPhoto.005C68F6
005C68F4|> \B3 01         mov bl,1
005C68F6|>33C0          xor eax,eax
--------------------------------------------------------------------------------------------------

另外发现一个很快找到位置爆破的操作。。但这些乱碰的。。而且和上面的爆破位置不一样,效果是一样的。。估计是影响了0还是1所以上下效果一样的(菜鸟)

关于为什么这样可以找到位置,还望高手说说教教~~~

话说我们bp GetPrivateProfileStringA

来到了~~~

0012F71C   00476729/CALL 到 GetPrivateProfileStringA 来自 kthPhoto.00476724
0012F720   005C6960|Section = "App"
0012F724   005C6954|Key = "SN"                     //这是ini文件存家吗的一项
0012F728   00404CA1|Default = ""
0012F72C   0012F744|ReturnBuffer = 0012F744
0012F730   00000800|BufSize = 800 (2048.)
0012F734   01578570\IniFileName = "C:\Program Files\KTH-3科泰华出入境证件数字相片采集系统\KTHSoft.INI"
0012F738   7C930228ntdll.7C930228
0012F73C   FFFFFFFF
0012F740   00474FE4kthPhoto.00474FE4
............
............
............//省略一亿字,因为我们直接拖到最底
............
0012FF98|00000000
0012FF9C|00000000
0012FFA0|01578570
0012FFA4]0012FFC0
0012FFA8|005C7042返回到 kthPhoto.005C7042 来自 kthPhoto.005C678C          //最最后一个返回到程序的,我们双击返回
0012FFAC|7FFDB000
0012FFB0|00390012返回到 00390012
0012FFB4|0012FFE0指针到下一个 SEH 记录
0012FFB8|0040431CSE 句柄
0012FFBC|0012FFC0
0012FFC0\0012FFF0
0012FFC4   7C817077返回到 kernel32.7C817077
0012FFC8   7C930228ntdll.7C930228
0012FFCC   FFFFFFFF
0012FFD0   7FFDB000
0012FFD4   805522FA
0012FFD8   0012FFC8
0012FFDC   85C551C0
0012FFE0   FFFFFFFFSEH 链尾部
0012FFE4   7C839AD8SE 句柄
0012FFE8   7C817080kernel32.7C817080
0012FFEC   00000000
0012FFF0   00000000
0012FFF4   00000000
0012FFF8   005C6F68kthPhoto.<ModuleEntryPoint>
0012FFFC   00000000

//回到cpu这里

005C6FC7   /74 74         je short kthPhoto.005C703D               ; //这里一跳过去,call了就出输入注册码窗口,nop掉达爆破效果(不懂理论,不知道为什么呢)
005C6FC9   |8B0D 9CC55C00   mov ecx,dword ptr ds:            ; kthPhoto.00675D88
005C6FCF   |8B03            mov eax,dword ptr ds:
005C6FD1   |8B15 8C395C00   mov edx,dword ptr ds:            ; kthPhoto.005C39D8
005C6FD7   |E8 B8C6EAFF   call kthPhoto.00473694
005C6FDC   |8B0D FCC85C00   mov ecx,dword ptr ds:            ; kthPhoto.00675D70
005C6FE2   |8B03            mov eax,dword ptr ds:
005C6FE4   |8B15 04185C00   mov edx,dword ptr ds:            ; kthPhoto.005C1850
005C6FEA   |E8 A5C6EAFF   call kthPhoto.00473694
005C6FEF   |8B0D DCC65C00   mov ecx,dword ptr ds:            ; kthPhoto.00675D50
005C6FF5   |8B03            mov eax,dword ptr ds:
005C6FF7   |8B15 20CB5B00   mov edx,dword ptr ds:            ; kthPhoto.005BCB6C
005C6FFD   |E8 92C6EAFF   call kthPhoto.00473694
005C7002   |8B0D F8C45C00   mov ecx,dword ptr ds:            ; kthPhoto.00675D18
005C7008   |8B03            mov eax,dword ptr ds:
005C700A   |8B15 2C985B00   mov edx,dword ptr ds:            ; kthPhoto.005B9878
005C7010   |E8 7FC6EAFF   call kthPhoto.00473694
005C7015   |8B0D 58C45C00   mov ecx,dword ptr ds:            ; kthPhoto.00675D30
005C701B   |8B03            mov eax,dword ptr ds:
005C701D   |8B15 A4AD5B00   mov edx,dword ptr ds:            ; kthPhoto.005BADF0
005C7023   |E8 6CC6EAFF   call kthPhoto.00473694
005C7028   |8B0D A8C95C00   mov ecx,dword ptr ds:            ; kthPhoto.00675D0C
005C702E   |8B03            mov eax,dword ptr ds:
005C7030   |8B15 44735B00   mov edx,dword ptr ds:            ; kthPhoto.005B7390
005C7036   |E8 59C6EAFF   call kthPhoto.00473694
005C703B   |EB 7B         jmp short kthPhoto.005C70B8
005C703D   \E8 4AF7FFFF   call kthPhoto.005C678C                   ; //这个call过了就出输入注册码的窗口。。我还不懂,直接往上看
005C7042    84C0            test al,al                               ; //双击后返回到这里

----------------------------------------------------------------------------------------

找算法,写注册机那些高深的东西留着哪位高手有兴趣就搞吧。。菜鸟飘过~~~~

--------------------------------------------------------------------------------
【经验总结】
断点后最后一个返回可能是好东西。

--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年09月15日 13:48:41

科维 发表于 2009-9-15 14:09

很详细的一个
学习了

ZeNiX 发表于 2009-11-27 12:07

krcox
你让我扣分扣到手抽筋了。:rggrg

zll1722 发表于 2012-3-21 18:07

请发个软件给我啊谢谢zll1722@QQ.com
页: [1]
查看完整版本: KTH-3科泰华出入境证件数字相片采集系统(高手直接无视)