浅谈SVKP 1.3X SDK stolen code 的找回

ZDNet 安全频道频道 更新时间:2008-06-13 作者: 来源:SohuIT

本文关键词:main EBX CODE

  【简要说明】:本来不是很想写,只因这个软件是我看到svkp1.3x抽代码最多的(足足抽了6A字节),所以"厚着脸皮",灌上一贴,只写了一下壳所抽代码的找回,不足或失误之处,还请各位大虾指点一二。建议如果你是新手,就先不要去试这样的壳,因为有点难度,当然这并不是说我很厉害,其实我也很菜的。



  【详细过程】:



  设置:忽略全部异常。隐藏你OD。



  OD载入目标停在这里:



  00598000 > 60 PUSHAD 停在这里



  00598001 E8 00000000 CALLDAP.00598006



  00598006 5D POPEBP



  00598007 81ED 06000000 SUBEBP,6



  按f9一次,发生异常,异常位置:



  0012E3B6 6285 20220000 BOUNDEAX,QWORDPTRSS:[EBP+2220] 这里异常



  0012E3BC EB 02 JMPSHORT 0012E3C0



  0012E3BE 0FE88B D1EB02CD PSUBSBMM1,QWORDPTRDS:[EBX+CD02EBD1]



  0012E3C5 208B C2EB02CD ANDBYTEPTRDS:[EBX+CD02EBC2],CL



  异常后在code段下f2断点.



  Memory map, item 13



  Address=00401000



  Size=000F0000 (983040.)



  Owner=DAP 00400000



  Section=



  Contains=code



  Type=Imag 01001002



  Access=R



  Initial access=RWE



  下断后,SHIFT+F9这样来到了这里.



  0394F14F 8A06 MOVAL,BYTEPTRDS:[ESI]



  0394F151 46 INCESI



  0394F152 47 INCEDI



  0394F153 8843 0F MOVBYTEPTRDS:[EBX+F],AL



  0394F156 8A46 FF MOVAL,BYTEPTRDS:[ESI-1]



  0394F159 55 PUSHEBP



  0394F15A E8 00000000 CALL0394F15F



  0394F15F 5D POPEBP



  0394F160 81ED 0D470000 SUBEBP,470D



  0394F166 8A8D 50030000 MOVCL,BYTEPTRSS:[EBP+350]



  0394F16C 5D POPEBP



  0394F16D 32C1 XORAL,CL



  0394F16F 8847 FF MOVBYTEPTRDS:[EDI-1],AL



  0394F172 8BC5 MOVEAX,EBP



  0394F174 4D DECEBP



  0394F175 85C0 TESTEAX,EAX



  0394F177 ^ 75 A4 JNZSHORT 0394F11D 这里跳回去循环解压代码



  0394F179 33C0 XOREAX,EAX



  0394F17B 5D POPEBP



  0394F17C 5F POPEDI



  0394F17D 5E POPESI



  0394F17E 5B POPEBX



  0394F17F C2 1400 RETN14 直接在这里下F4



  在0394f17f处下F4,因解压要一定的时间,所以如果你的机子配置较低的话可能等的时间比较长。f4停下后,我们再次在code段下f2断点,这里来到了这里:



  039499AE 66:813E 4A43 CMPWORDPTRDS:[ESI],434A



  039499B3 0F85 23010000 JNZ03949ADC



  039499B9 83C6 0A ADDESI,0A



  现在在12FFB0处下硬件访问断点(也就是hr 12ffb0),为什么在这里下呢,这个看官你自己想想吧,如果要在这里下断的原因也不知道的话,建议你先看一下基础知识。



  第一次断这里:



  0012FC40 60 PUSHAD



  0012FC41 E8 03000000 CALL0012FC49



  ……



  0012FC54 E8 01000000 CALL0012FC5A 第二次



  0012FC59 E8 E8020000 CALL0012FF46



  0012FC5E 00CD ADDCH,CL



  0012FC60 2083 04240B83 ANDBYTEPTRDS:[EBX+830B2404],AL



  ……



  0012FCFB E8 00000000 CALL0012FD00 第三次



  0012FD00 5D POPEBP



  0012FD01 E8 02000000 CALL0012FD08



  第三次中断后hd 12ffb0取消断点。再下tc ebp==12ffc0(start espvalue-4,谢谢tDasm),这样在这里断下:



  03AD0647 0AAF BB010424 ORCH,BYTEPTRDS:[EDI+240401BB]



  03AD064D 5D POPEBP



  03AD064E E9 A10A0000 JMP03AD10F4 断在这里



  现在先清掉run trace window里的内容,并选择log file,记录到文件。做完准备工作后,下tc eip<03000000,这样到了fake oep处.



  004D6214 90 NOP



  004D6215 90 NOP



  004D6216 E8 6183F5FF CALLDAP.0042E57C 停在这里



  004D621B 391D 380E5400 CMPDWORDPTRDS:[540E38],EBX



  004D6221 75 0C JNZSHORT DAP.004D622F



  004D6223 68 5E634D00 PUSHDAP.004D635E



  向上看一下,晕倒,壳抽了这么多的代码。要命呀,有点苦了。现在我们要开始分析代码了,



  看看程序的"模样",就知道它应该是用C写的程序。所以现在要"联想"一下C的oep的大概样子,当然,其实是要分析代码得出壳所抽的代码。先静态分析出轮廓。也因为这篇文章就是讲怎么找代码,所以个人认为应该详细一点(所以把大部分的代码都copy过来),



  03AD10F4 Main POPEAX◆这里典型的SVKP的代码,所以这里应该是push ebp



  03AD10F5 Main NOP◆因为一般C的开始处都不变,也就是说,第二句应该是mov ebp,esp



  03AD10F6 Main PUSHADEDF13D



  03AD10FB Main PUSHEAX



  03AD10FC Main MOVEAX,52120FAB EAX=52120FAB



  03AD1101 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1105 Main POPEAX EAX=03AD05B3



  03AD1106 Main ADDEAX,52120FAB EAX=55BF155E



  03AD110B Main ADDEAX,52120FAB EAX=A7D12509



  03AD1110 Main JMP03AD195B



  03AD195B Main PUSHEAX



  03AD195C Main JMP03AD0B7A



  03AD0B7A Main MOVEAX,52120FAB EAX=52120FAB



  03AD0B7F Main SUBDWORDPTRSS:[ESP],EAX



  03AD0B82 Main JMP03AD124F



  03AD124F Main MOVEAX,DWORDPTRSS:[ESP] EAX=55BF155E



  03AD1252 Main JMP03AD1FAE



  03AD1FAE Main MOVEAX,52120FAB EAX=52120FAB



  03AD1FB3 Main SUBDWORDPTRSS:[ESP],EAX



  03AD1FB6 Main JMP03AD10A6



  03AD10A6 Main MOVEAX,DWORDPTRSS:[ESP] EAX=03AD05B3



  03AD10A9 Main PUSHADEDF06C



  03AD10AE Main PUSHEAX



  03AD10AF Main MOVEAX,52120FAB EAX=52120FAB



  03AD10B4 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD10B8 Main JMP03AD1CA5



  03AD1CA5 Main POPEAX EAX=03AD05B3



  03AD1CA6 Main JMP03AD2175



  03AD2175 Main POPEAX EAX=00000017



  03AD2176 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD217A Main POPEAX EAX=03AD05B3



  03AD217B Main PUSHAF7D04C0



  03AD2180 Main ADDEAX,52120FAB EAX=55BF155E



  03AD2185 Main PUSHEAX



  03AD2186 Main MOVEAX,52120FAB EAX=52120FAB



  03AD218B Main SUBDWORDPTRSS:[ESP],EAX



  03AD218E Main MOVEAX,DWORDPTRSS:[ESP] EAX=03AD05B3



  03AD2191 Main MOVEAX,52120FAB EAX=52120FAB



  03AD2196 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD219A Main POPEAX EAX=03AD05B3



  03AD219B Main ADDEAX,52120FAB EAX=55BF155E



  03AD21A0 Main PUSHEAX



  03AD21A1 Main MOVEAX,52120FAB EAX=52120FAB



  03AD21A6 Main JMP03AD1AC5



  03AD1AC5 Main SUBDWORDPTRSS:[ESP],EAX



  03AD1AC8 Main JMP03AD0D5A



  03AD0D5A Main MOVEAX,DWORDPTRSS:[ESP] EAX=03AD05B3



  03AD0D5D Main JMP03AD15CB



  03AD15CB Main PUSHACAF316A



  03AD15D0 Main ADDEAX,52120FAB EAX=55BF155E



  03AD15D5 Main PUSHEAX



  03AD15D6 Main JMP03AD2370



  03AD2370 Main MOVEAX,52120FAB EAX=52120FAB



  03AD2375 Main JMP03AD06B7



  03AD06B7 Main SUBDWORDPTRSS:[ESP],EAX



  03AD06BA Main MOVEAX,DWORDPTRSS:[ESP] EAX=03AD05B3



  03AD06BD Main MOVEAX,52120FAB EAX=52120FAB



  03AD06C2 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD06C6 Main POPEAX EAX=03AD05B3



  03AD06C7 Main JMP03AD19F3



  03AD19F3 Main POPEAX EAX=FEC14115



  03AD19F4 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD19F8 Main JMP03AD0740



  03AD0740 Main POPEAX EAX=03AD05B3



  03AD0741 Main PUSH18C221F



  03AD0746 Main PUSHEAX



  03AD0747 Main PUSH0



  03AD074C Main MOVEAX,52120FAB EAX=52120FAB



  03AD0751 Main ADDDWORDPTRSS:[ESP],EAX



  03AD0754 Main MOVEDX,EDX



  03AD0756 Main POPEAX



  03AD0757 Main ADDDWORDPTRSS:[ESP],EAX



  03AD075A Main POPEAX EAX=55BF155E



  03AD075B Main PUSHEAX



  03AD075C Main PUSH0



  03AD0761 Main PUSHEAX



  03AD0762 Main MOVEAX,52120FAB EAX=52120FAB



  03AD0767 Main JMP03AD1F8D



  03AD1F8D Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1F91 Main JMP03AD1040



  03AD1040 Main POPEAX EAX=55BF155E



  03AD1041 Main POPEAX EAX=52120FAB



  03AD1042 Main SUBDWORDPTRSS:[ESP],EAX



  03AD1045 Main MOVEAX,DWORDPTRSS:[ESP] EAX=03AD05B3



  03AD1048 Main MOVEAX,FEC14115 EAX=FEC14115



  03AD104D Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1051 Main POPEAX EAX=03AD05B3



  03AD1052 Main XCHGEBP,EBP



  03AD1054 Main PUSH5A9D21BF



  03AD1059 Main PUSHEAX



  03AD105A Main MOVEAX,52120FAB EAX=52120FAB



  03AD105F Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1063 Main POPEAX EAX=03AD05B3



  03AD1064 Main MOVESP,ESP



  03AD1066 Main PUSHEAX



  03AD1067 Main PUSH0



  03AD106C Main JMP03AD19B7



  03AD19B7 Main PUSHEAX



  03AD19B8 Main MOVEAX,52120FAB EAX=52120FAB



  03AD19BD Main JMP03AD1F6C



  03AD1F6C Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1F70 Main JMP03AD0C6B



  03AD0C6B Main POPEAX EAX=03AD05B3



  03AD0C6C Main JMP03AD0C43



  03AD0C43 Main POPEAX EAX=52120FAB



  03AD0C44 Main JMP03AD07FC



  03AD07FC Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD0800 Main JMP03AD1D77



  03AD1D77 Main POPEAX EAX=03AD05B3



  03AD1D78 Main POPEAX EAX=FEC14115



  03AD1D79 Main JMP03AD23AA



  03AD23AA Main PUSHDWORDPTRFS:[0] ◆这里也是变形的,看它无端端来一个push fs:[0]也可以看到,肯定有动作.



  03AD23B1 Main SUBDWORDPTRSS:[ESP],EAX



  03AD23B4 Main POPEAX EAX=0151BECB



  03AD23B5 Main PUSHEAX 分析结果,上面的是mov eax,fs:[0]



  03AD23B6 Main PUSH5A9D21BF



  03AD23BB Main PUSHEAX



  03AD23BC Main MOVEAX,EAX



  03AD23BE Main MOVEAX,52120FAB EAX=52120FAB



  03AD23C3 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD23C7 Main POPEAX EAX=0151BECB



  03AD23C8 Main MOVEAX,52120FAB EAX=52120FAB



  03AD23CD Main ADDDWORDPTRSS:[ESP],EAX



  03AD23D0 Main POPEAX EAX=FEC14115



  03AD23D1 Main ADDDWORDPTRSS:[ESP],EAX



  03AD23D4 Main JMP03AD24B4



  03AD24B4 Main POPEAX EAX=0012FFE0



  03AD24B5 Main JMP03AD1424



  03AD1424 Main PUSHEAX



  03AD1425 Main PUSHACAF316A



  03AD142A Main JMP03AD1366



  03AD1366 Main MOVEAX,52120FAB EAX=52120FAB



  03AD136B Main ADDDWORDPTRSS:[ESP],EAX



  03AD136E Main POPEAX EAX=FEC14115



  03AD136F Main ADDDWORDPTRSS:[ESP],EAX



  03AD1372 Main POPEAX EAX=FED440F5



  03AD1373 Main ADDEAX,52120FAB EAX=50E650A0



  03AD1378 Main ADDEAX,52120FAB EAX=A2F8604B



  03AD137D Main PUSHEAX



  03AD137E Main MOVEDI,EDI



  03AD1380 Main MOVEAX,52120FAB EAX=52120FAB



  03AD1385 Main SUBDWORDPTRSS:[ESP],EAX



  03AD1388 Main MOVEAX,DWORDPTRSS:[ESP] EAX=50E650A0



  03AD138B Main JMP03AD13D5



  03AD13D5 Main MOVEAX,52120FAB EAX=52120FAB



  03AD13DA Main SUBDWORDPTRSS:[ESP],EAX



  03AD13DD Main MOVEAX,DWORDPTRSS:[ESP] EAX=FED440F5



  03AD13E0 Main PUSHACAF316A



  03AD13E5 Main PUSHEAX



  03AD13E6 Main JMP03AD211A



  03AD211A Main MOVEAX,52120FAB EAX=52120FAB



  03AD211F Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD2123 Main JMP03AD1D50



  03AD1D50 Main POPEAX EAX=FED440F5



  03AD1D51 Main JMP03AD08CD



  03AD08CD Main POPEAX EAX=FEC14115



  03AD08CE Main SUBDWORDPTRSS:[ESP],EAX



  03AD08D1 Main JMP03AD1820



  03AD1820 Main MOVEAX,DWORDPTRSS:[ESP] ◆这里就是变形的push eax



  03AD1823 Main JMP03AD152B



  03AD152B Main MOVDWORDPTRFS:[0],ESP◆



  03AD1532 Main SUBESP,68 ◆



  03AD1535 Main PUSHEAX



  03AD1536 Main ADDEBX,52120FAB EBX=D20FFFAB



  03AD153C Main PUSHEBX



  03AD153D Main JMP03AD0888



  03AD0888 Main PUSHEAX



  03AD0889 Main MOVEAX,52120FAB EAX=52120FAB



  03AD088E Main SUBDWORDPTRSS:[ESP+4],EAX



  03AD0892 Main POPEAX EAX=0012FFE0



  03AD0893 Main SUBEBX,52120FAB EBX=7FFDF000



  03AD0899 Main PUSHACAF316A



  03AD089E Main PUSH0



  03AD08A3 Main PUSHEAX



  03AD08A4 Main JMP03AD173D



  03AD173D Main MOVEAX,52120FAB EAX=52120FAB



  03AD1742 Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1746 Main JMP03AD0E89



  03AD0E89 Main POPEAX EAX=0012FFE0



  03AD0E8A Main POPEAX &n, bsp; EAX=52120FAB



  03AD0E8B Main ADDDWORDPTRSS:[ESP],EAX



  03AD0E8E Main POPEAX EAX=FEC14115



  03AD0E8F Main ADDDWORDPTRSS:[ESP],EAX



  03AD0E92 Main JMP03AD1EFE



  03AD1EFE Main POPEBX EBX=7EBF3115



  03AD1EFF Main POPEAX EAX=0012FFE0



  03AD1F00 Main ADDEBX,52120FAB EBX=D0D140C0



  03AD1F06 Main PUSHEBX



  03AD1F07 Main PUSHEAX



  03AD1F08 Main MOVEAX,52120FAB EAX=52120FAB



  03AD1F0D Main SUBDWORDPTRSS:[ESP+4],EAX



  03AD1F11 Main JMP03AD207F



  03AD207F Main POPEAX EAX=0012FFE0



  03AD2080 Main JMP03AD1E40



  03AD1E40 Main SUBEBX,52120FAB EBX=7EBF3115



  03AD1E46 Main ADDEAX,52120FAB EAX=52250F8B



  03AD1E4B Main ADDEAX,52120FAB EAX=A4371F36



  03AD1E50 Main NOP



  03AD1E51 Main PUSHEAX



  03AD1E52 Main JMP03AD2331



  03AD2331 Main MOVEAX,52120FAB EAX=52120FAB



  03AD2336 Main SUBDWORDPTRSS:[ESP],EAX



  03AD2339 Main MOVEAX,DWORDPTRSS:[ESP] EAX=52250F8B



  03AD233C Main JMP03AD16FD



  03AD16FD Main MOVEAX,52120FAB EAX=52120FAB



  03AD1702 Main MOVECX,ECX



  03AD1704 Main SUBDWORDPTRSS:[ESP],EAX



  03AD1707 Main JMP03AD09FB



  03AD09FB Main MOVEAX,DWORDPTRSS:[ESP] EAX=0012FFE0



  03AD09FE Main PUSHACAF316A



  03AD0A03 Main PUSHEAX



  03AD0A04 Main JMP03AD1E78



  03AD1E78 Main MOVEAX,52120FAB EAX=52120FAB



  03AD1E7D Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD1E81 Main POPEAX EAX=0012FFE0



  03AD1E82 Main POPEAX EAX=FEC14115



  03AD1E83 Main SUBDWORDPTRSS:[ESP+4],EAX



  03AD1E87 Main POPEAX EAX=0012FFE0



  03AD1E88 Main PUSHEAX



  03AD1E89 Main ADDEBX,52120FAB EBX=D0D140C0



  03AD1E8F Main JMP03AD1DEE



  03AD1DEE Main PUSHEBX



  03AD1DEF Main JMP03AD189B



  03AD189B Main PUSHEAX



  03AD189C Main JMP03AD1C65



  03AD1C65 Main MOVEAX,52120FAB EAX=52120FAB



  03AD1C6A Main SUBDWORDPTRSS:[ESP+4],EAX



  03AD1C6E Main XCHGEDI,EDI



  03AD1C70 Main POPEAX EAX=0012FFE0



  03AD1C71 Main SUBEBX,52120FAB EBX=7EBF3115



  03AD1C77 Main PUSH50D350C0



  03AD1C7C Main PUSH0



  03AD1C81 Main PUSHEAX



  03AD1C82 Main MOVEAX,52120FAB EAX=52120FAB



  03AD1C87 Main JMP03AD240E



  03AD240E Main ADDDWORDPTRSS:[ESP+4],EAX



  03AD2412 Main JMP03AD20B4



  03AD20B4 Main POPEAX EAX=0012FFE0



  03AD20B5 Main POPEAX EAX=52120FAB



  03AD20B6 Main SUBDWORDPTRSS:[ESP],EAX



  03AD20B9 Main JMP03AD22B8



  03AD22B8 Main POPEAX EAX=FEC14115



  03AD22B9 Main SUBDWORDPTRSS:[ESP],EAX



  03AD22BC Main POPEBX◆ EBX=7FFDF000



  03AD22BD Main POPEAX EAX=0012FFE0



  03AD22BE Main PUSHEAX



  03AD22BF Main XCHGEAX,EAX



  03AD22C1 Main PUSHESI◆



  03AD22C2 Main JMP03AD0A52



  03AD0A52 Main PUSHACAF316A



  03AD0A57 Main JMP03AD2508



  03AD2508 Main MOVEAX,52120FAB EAX=52120FAB

安全频道 EBX 最新报道

[an error occurred while processing this directive]