好友
阅读权限25
听众
最后登录1970-1-1
|
mycc
发表于 2011-1-18 16:22
版主帮我+分,我这里也只能简单的说说过程,主要原算法,我没耐心去看,昨晚下来后,转了几下
找到关键点,发现是明码形式的,但在动态内存段下个断点,竟然崩溃了
找了找,发现问题在
cmp dword ptr [ebp-8], 0F4240
jl xxxx ( 我用的是 WIN7 ,动态内存,每次不同,太FUCK了)
可以在启动后搜索上面的那条 CMP ,然后把下面修改为 jg xxxxxx
————————————————————————
然后你就进入算法阶段了,经历过一阵痛苦的 F8 后,发现太令人烦躁了(我这人就缺乏耐心啊,无语),
唯有,继续无视算法,继续以一个革命者的精神CTRL+F12看看这个同志死在那里,结果发现了敌人的踪影
013A79E0 call 013A7800
013A79E5 call 013AFBA2 程序在这里停了,进入一看原来不是它,回头找到 CALL 13A7800 处
—————— 进入 13A7800 后 , 你懂的
013A7848 cmp ebx, dword ptr [13C6AC0] 此时 [13C6AC0] 中的值就是第一个验证码
013A784E jnz short 013A7884
好了,穿过了第一重关卡,我没留意楼主的帖子,原来要 OK 才是正确 (开始我输入 2222222 得到 KK 以为成功了 )
于是对 KK 在内存中对 KK 字符地址,下硬件写入断点,发现原来需要解码
01206F20 push ebp
01206F21 mov ebp, esp
01206F23 sub esp, 34
01206F26 mov dword ptr [ebp-24], ecx
01206F29 nop
01206F2A mov eax, dword ptr [12258C4] 提取第一个字符
01206F2F sub eax, 30
01206F32 mov dword ptr [ebp-28], eax
01206F35 fild dword ptr [ebp-28]
01206F38 fstp qword ptr [ebp-8]
01206F3B mov ecx, dword ptr [12258C8] 提取第二个字符
01206F41 sub ecx, 30
01206F44 mov dword ptr [ebp-2C], ecx
01206F47 fild dword ptr [ebp-2C]
01206F4A fstp qword ptr [ebp-10]
01206F4D fld qword ptr [ebp-10]
01206F50 call 012204F8
01206F55 call <__ftol2_sse>
01206F5A mov dword ptr [ebp-18], eax
01206F5D fild dword ptr [ebp-18]
01206F60 fstp qword ptr [ebp-34]
01206F63 fld qword ptr [ebp-8]
01206F66 call <__CIlog>
01206F6B fmul qword ptr [ebp-34]
01206F6E call <__ftol2_sse>
01206F73 mov dword ptr [ebp-1C], eax
01206F76 mov dl, byte ptr [ebp-1C]
01206F79 mov byte ptr [ebp-14], dl
01206F7C mov al, byte ptr [ebp-18]
01206F7F mov byte ptr [ebp-13], al
01206F82 mov dword ptr [ebp-20], 0
01206F89 jmp short 01206F94
01206F8B mov ecx, dword ptr [ebp-20]
01206F8E add ecx, 1
01206F91 mov dword ptr [ebp-20], ecx
01206F94 cmp dword ptr [ebp-20], 2
01206F98 jge short 01206FB9
01206F9A mov edx, dword ptr [ebp-20]
01206F9D movsx eax, byte ptr [ebp+edx-14]
01206FA2 mov ecx, dword ptr [ebp-20]
01206FA5 movsx edx, byte ptr [ecx+12258CC]
01206FAC xor eax, edx EDX 为变量 0x49
01206FAE mov ecx, dword ptr [ebp-20]
01206FB1 mov byte ptr [ecx+1226AE4], al 解码完毕写入最后显示字符
01206FB7 jmp short 01206F8B
01206FB9 mov esp, ebp
01206FBB pop ebp
于是,只要你的第一个字符经过浮点后,来到 1206FAC 时是 6 ( xor eax_6,edx_0x49 = 0x4F 0 )
第二个字符来到 2 ( xor eax_2,edx_0x49 = 0x4B K )
世界和谐了
|
免费评分
-
查看全部评分
|