z26650 发表于 2011-1-17 11:39

发一个cm。。标题要长。。

本帖最后由 z26650 于 2011-1-17 12:21 编辑

那个,论坛终于恢复了。。还是像原来一样,仍一个cm。。这cm是我过去的一个cm'修改而成的。。基本上不会有什么bug。。如果遇到了,就是RP问题了,补充一下。只有出现OK才是破解成功.{:1_918:}


lkou 发表于 2011-1-17 11:44

第一次看到控制台的CM

z26650 发表于 2011-1-17 11:46

回复 lkou 的帖子

话说那个。。我原来也发过控制台的cm的。。。{:1_908:}被无视了吗{:1_937:}

lkou 发表于 2011-1-17 11:47

本帖最后由 lkou 于 2011-1-17 11:47 编辑

我很少来这个区的。。。。。

z26650 发表于 2011-1-17 21:34

话说。。这cm没人玩吗- -{:1_904:}
偶又被打击了- -

mycc 发表于 2011-1-17 21:41

刚下来看了看,完全不懂


z26650 发表于 2011-1-17 21:49

回复 mycc 的帖子

应该说还差半步。。最后应该是OK才是正确的。。KK的话字符串解码不对哦- -

mycc 发表于 2011-1-17 22:44

哦,我刚才粗心了,调试的太快每看清楚要求,再来一次
xor b,49
ok


mycc 发表于 2011-1-18 16:22

版主帮我+分,我这里也只能简单的说说过程,主要原算法,我没耐心去看,昨晚下来后,转了几下
找到关键点,发现是明码形式的,但在动态内存段下个断点,竟然崩溃了

找了找,发现问题在

cmp   dword ptr , 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          此时 中的值就是第一个验证码
013A784E                jnz   short 013A7884

好了,穿过了第一重关卡,我没留意楼主的帖子,原来要 OK才是正确 (开始我输入 2222222 得到 KK 以为成功了 )

于是对 KK 在内存中对 KK 字符地址,下硬件写入断点,发现原来需要解码

01206F20            push    ebp
01206F21            mov   ebp, esp
01206F23            sub   esp, 34
01206F26            mov   dword ptr , ecx
01206F29            nop
01206F2A            mov   eax, dword ptr           提取第一个字符
01206F2F            sub   eax, 30
01206F32            mov   dword ptr , eax
01206F35            fild    dword ptr
01206F38            fstp    qword ptr
01206F3B            mov   ecx, dword ptr          提取第二个字符
01206F41            sub   ecx, 30
01206F44            mov   dword ptr , ecx
01206F47            fild    dword ptr
01206F4A            fstp    qword ptr
01206F4D            fld   qword ptr
01206F50            call    012204F8
01206F55            call    <__ftol2_sse>
01206F5A            mov   dword ptr , eax
01206F5D            fild    dword ptr
01206F60            fstp    qword ptr
01206F63            fld   qword ptr
01206F66            call    <__CIlog>
01206F6B            fmul    qword ptr
01206F6E            call    <__ftol2_sse>
01206F73            mov   dword ptr , eax
01206F76            mov   dl, byte ptr
01206F79            mov   byte ptr , dl
01206F7C            mov   al, byte ptr
01206F7F            mov   byte ptr , al
01206F82            mov   dword ptr , 0
01206F89            jmp   short 01206F94
01206F8B            mov   ecx, dword ptr
01206F8E            add   ecx, 1
01206F91            mov   dword ptr , ecx
01206F94            cmp   dword ptr , 2
01206F98            jge   short 01206FB9
01206F9A            mov   edx, dword ptr
01206F9D            movsx   eax, byte ptr
01206FA2            mov   ecx, dword ptr
01206FA5            movsx   edx, byte ptr
01206FAC            xor   eax, edx                        EDX 为变量 0x49
01206FAE            mov   ecx, dword ptr
01206FB1            mov   byte ptr , 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 )

世界和谐了

z26650 发表于 2011-1-18 22:03

回复 mycc 的帖子

本来以为这是这个系列的最后一个版本了。。看了之后发现。。还可以更新。。。
页: [1] 2
查看完整版本: 发一个cm。。标题要长。。