本人初学 还请各位大力支持 技术太差 见笑
本贴是求助贴,求助解释一下出现如下问题的原因
2005年7月的时候,开始接触脱壳破解,一开始就拿屏幕间谍2004练习了一下,竟然给爆破了,昨天整理硬盘的时候,发现了曾经这个东西,突发奇想,想看看作者有没有更新的版本发布,在程序自我保护方面有没有新的改进,于是在网上看了一下,发现原来有了最新的版本,2008版,也就是spy1612x(我不知道这个是不是最新版的,我认为可能是吧),于是拿来测试,发现这次加的壳和屏幕间谍2004版的壳相同(ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov),编译语言也相同 vb,所以今天就拿他试演了。
说明一下:本人只是出于测试,没有其他目的,如果有不妥之处轻指出!
脱壳就不用说了 软件直接脱壳,至于破解 本人现在还不知道怎么才能进去分析该软件,发现一旦运行就直奔系统控制区,7*******,没法,测试了n久,发现函数调用
00401186 .- FF25 28104000 jmp dword ptr [<&msvbvm60.#595>] ; msvbvm60.rtcMsgBox
处下断能断下来
运行程序,shift+f9 15次后程序正常运行,打开注册页面,填入注册码,确定,
程序第一次被断在401186的时候看到堆栈窗口 中有
0012E628 00197194 UNICODE "5471152008"
实际上这个就是注册码了,后来经过分析知道,该软件2008版1612x的注册码格式如下:
前三位是每个计算机不同,具体怎么得来的还有待高手提示我怎么进入软件处理数据区了才能知道,注册码第4,5,6位是通过你输入的用户名计算得来的(还是不知道怎么算的,跟踪,算法方面一窍不通),注册码第7,8,9,10位是固定的数字2008 ,虽然我这样能找到注册码
可是我的目标是至少找到爆破点,能做出补丁文件,或者破解文件,至于算法,请那位高人先告诉我怎么才能跟踪到该软件的代码里面去!
00401120 .- FF25 AC104000 jmp dword ptr [<&msvbvm60.#610>] ; msvbvm60.rtcGetDateVar
00401126 .- FF25 B0104000 jmp dword ptr [<&msvbvm60.#613>] ; msvbvm60.rtcVarStrFromVar
0040112C .- FF25 10104000 jmp dword ptr [<&msvbvm60.#660>] ; msvbvm60.rtcVarFromFormatVar
00401132 .- FF25 C0104000 jmp dword ptr [<&msvbvm60.#619>] ; msvbvm60.rtcRightCharVar
00401138 .- FF25 E0104000 jmp dword ptr [<&msvbvm60.#581>] ; msvbvm60.rtcR8ValFromBstr
0040113E .- FF25 38104000 jmp dword ptr [<&msvbvm60.#522>] ; msvbvm60.rtcLeftTrimVar
00401144 .- FF25 34104000 jmp dword ptr [<&msvbvm60.#520>] ; msvbvm60.rtcTrimVar
0040114A .- FF25 78104000 jmp dword ptr [<&msvbvm60.#607>] ; msvbvm60.rtcStringVar
00401150 .- FF25 7C104000 jmp dword ptr [<&msvbvm60.#608>] ; msvbvm60.rtcVarBstrFromAnsi
00401156 .- FF25 B8104000 jmp dword ptr [<&msvbvm60.#617>] ; msvbvm60.rtcLeftCharVar
0040115C .- FF25 68104000 jmp dword ptr [<&msvbvm60.#711>] ; msvbvm60.rtcSplit
00401162 .- FF25 4C104000 jmp dword ptr [<&msvbvm60.#528>] ; msvbvm60.rtcUpperCaseVar
00401168 .- FF25 94104000 jmp dword ptr [<&msvbvm60.#645>] ; msvbvm60.rtcDir
0040116E .- FF25 08104000 jmp dword ptr [<&msvbvm60.#518>] ; msvbvm60.rtcLowerCaseVar
00401174 .- FF25 80104000 jmp dword ptr [<&msvbvm60.#531>] ; msvbvm60.rtcMakeDir
0040117A .- FF25 40104000 jmp dword ptr [<&msvbvm60.#632>] ; msvbvm60.rtcMidCharVar
00401180 .- FF25 1C104000 jmp dword ptr [<&msvbvm60.#554>] ; msvbvm60.rtcFileReset
00401186 .- FF25 28104000 jmp dword ptr [<&msvbvm60.#595>] ; msvbvm60.rtcMsgBox
0040118C .- FF25 98104000 jmp dword ptr [<&msvbvm60.#571>] ; msvbvm60.rtcEndOfFile
00401192 .- FF25 88104000 jmp dword ptr [<&msvbvm60.#717>] ; msvbvm60.rtcStrConvVar2
00401198 .- FF25 DC104000 jmp dword ptr [<&msvbvm60.#580>] ; msvbvm60.rtcSetFileAttr
0040119E .- FF25 5C104000 jmp dword ptr [<&msvbvm60.#600>] ; msvbvm60.rtcShell
004011A4 .- FF25 50104000 jmp dword ptr [<&msvbvm60.#529>] ; msvbvm60.rtcKillFiles
004011AA .- FF25 04104000 jmp dword ptr [<&msvbvm60.#516>] ; msvbvm60.rtcAnsiValueBstr
004011B0 .- FF25 30104000 jmp dword ptr [<&msvbvm60.#599>] ; msvbvm60.rtcSendKeys
004011B6 .- FF25 A0104000 jmp dword ptr [<&msvbvm60.#685>] ; msvbvm60.rtcErrObj
004011BC .- FF25 44104000 jmp dword ptr [<&msvbvm60.#526>] ; msvbvm60.rtcSpaceVar
004011C2 .- FF25 6C104000 jmp dword ptr [<&msvbvm60.#712>] ; msvbvm60.rtcReplace
004011C8 .- FF25 90104000 jmp dword ptr [<&msvbvm60.#537>] ; msvbvm60.rtcBstrFromAnsi
004011CE .- FF25 18104000 jmp dword ptr [<&msvbvm60.#661>] ; msvbvm60.rtcDateAdd
004011D4 .- FF25 84104000 jmp dword ptr [<&msvbvm60.#532>] ; msvbvm60.rtcRemoveDir
004011DA .- FF25 74104000 jmp dword ptr [<&msvbvm60.#606>] ; msvbvm60.rtcStringBstr
004011E0 .- FF25 A8104000 jmp dword ptr [<&msvbvm60.#579>] ; msvbvm60.rtcGetFileAttr
004011E6 .- FF25 2C104000 jmp dword ptr [<&msvbvm60.#598>] ; msvbvm60.rtcDoEvents
004011EC .- FF25 B4104000 jmp dword ptr [<&msvbvm60.#616>] ; msvbvm60.rtcLeftCharBstr
004011F2 .- FF25 9C104000 jmp dword ptr [<&msvbvm60.#573>] ; msvbvm60.rtcHexVarFromVar
004011F8 .- FF25 70104000 jmp dword ptr [<&msvbvm60.#713>] ; msvbvm60.rtcStrReverse
004011FE .- FF25 24104000 jmp dword ptr [<&msvbvm60.#594>] ; msvbvm60.rtcRandomize
00401204 .- FF25 20104000 jmp dword ptr [<&msvbvm60.#593>] ; msvbvm60.rtcRandomNext
0040120A .- FF25 BC104000 jmp dword ptr [<&msvbvm60.#618>] ; msvbvm60.rtcRightCharBstr
00401210 .- FF25 0C104000 jmp dword ptr [<&msvbvm60.#519>] ; msvbvm60.rtcTrimBstr
00401216 .- FF25 3C104000 jmp dword ptr [<&msvbvm60.#524>] ; msvbvm60.rtcRightTrimVar
0040121C .- FF25 64104000 jmp dword ptr [<&msvbvm60.__vbaExcep>; msvbvm60.__vbaExceptHandler
00401222 .- FF25 60104000 jmp dword ptr [<&msvbvm60.EVENT_SINK>; msvbvm60.EVENT_SINK_QueryInterface
00401228 .- FF25 48104000 jmp dword ptr [<&msvbvm60.EVENT_SINK>; msvbvm60.EVENT_SINK_AddRef
0040122E .- FF25 58104000 jmp dword ptr [<&msvbvm60.EVENT_SINK>; msvbvm60.EVENT_SINK_Release
00401234 .- FF25 00104000 jmp dword ptr [<&msvbvm60.MethCallEn>; msvbvm60.MethCallEngine
0040123A .- FF25 8C104000 jmp dword ptr [<&msvbvm60.ProcCallEn>; msvbvm60.ProcCallEngine
00401240 $- FF25 A4104000 jmp dword ptr [<&msvbvm60.#100>] ; msvbvm60.ThunRTMain
00401246 00 db 00
00401247 00 db 00
00401248 > $ 68 CC154000 push 004015CC ; ASCII "VB5!6&vb6chs.dll"
0040124D . E8 EEFFFFFF call <jmp.&msvbvm60.#100>
00401252 . 0000 add byte ptr [eax], al
00401254 . 0000 add byte ptr [eax], al
00401256 . 0000 add byte ptr [eax], al
00401258 . 3000 xor byte ptr [eax], al
0040125A . 0000 add byte ptr [eax], al
0040125C . 40 inc eax
0040125D . 0000 add byte ptr [eax], al
0040125F . 0000 add byte ptr [eax], al
00401261 . 0000 add byte ptr [eax], al
00401263 . 001E add byte ptr [esi], bl
00401265 . 64:62B6 4C8DD>bound esi, qword ptr fs:[esi+46D68D4C]
经过测试 同时发现
004011AA .- FF25 04104000 jmp dword ptr [<&msvbvm60.#516>] ; msvbvm60.rtcAnsiValueBstr
处能断下来,根据内容猜测是逐个用户名断下来执行,只是里面的都是在系统领域执行,不知道这样执行有什么意义? 主要是回不到程序领空, 不知道程序中是怎么执行的,怎么计算注册码的!
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法