吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5093|回复: 6
收起左侧

[转贴] 简单还原某Cm一句IF命令 适合新手,vm初学者

[复制链接]
Emil 发表于 2013-3-8 15:10
[转]简单还原某Cm一句IF命令
-------------------------------------------------【文章简介】-------------------------------------------------
【文章标题】 简单还原某Cm一句IF命令
【文章作者】 SoySauce
【作者邮箱】
【作者主页】  HtTp://Hi.BaiDu.Com/c3kSoySauce
【软件名称】 明码比较无壳
【软件大小】 36k
【下载地址】 http://good.gd/2459585.htm
【加壳方式】 无
【保护方式】 一句语句Vm
【编写语言】 Microsoft Visual C++ 6.0
【使用工具】 OllyDbg
【操作平台】 Xp
【软件介绍】 一个只有一句If语句的明码比较Crack Me 群里某位放出来娱乐的
【作者声明】 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
-------------------------------------------------【文章正文】-------------------------------------------------
前言,也许是世界上最简单的Crack Me了 只有一句If 判断编辑框内容 然后MessageBox提示是否成功
在看这篇文章之前 我想说的是 虽然是最简单的 但是考验的是基础 基础扎实了 后期才可以走自己的路
懂Vc和汇编的 也许只是分分钟就可以把这句代码还原 当然F5更容易 这里我说的是在OLlydbg里手工处理
这段vm代码
原始的语句 我们脑海里直接可以构思

void CtazDlg::ONOK()
{
  // TODO: Add extra  valIDAtion here
   updatedata(TRUE)
  If (m_1=="???????")   编辑框内真码
{
   MessageBoxA("??");  信息框提示内容
}
}

载入OllyDbg  Ctrl+B FF25  来到 004015A0   .- FF25 74214000 jmp dword ptr ds:[<&MFC42.#4673>]        ;  mfc42.#4673
往下拉  一般像这种最原始的IF语句Cm 最后面两个就是我们所需要的  #4224 为信息框 #6334为编辑框
如果你觉得有疑问 你可以自己编译一个 然后载入OllyDbg查看 会发现都是如此
004017AA   .- FF25 64214000 jmp dword ptr ds:[<&MFC42.#4224>]        ;  mfc42.#4224  信息框
004017B0   .- FF25 68214000 jmp dword ptr ds:[<&MFC42.#6334>]        ;  mfc42.#6334  编辑框内容
往上看 If语句Vm起始地址 00401550   .- E9 E2600000   jmp 明码比较.00407637
结束地址 0040157E   .  D2CE          ror dh,cl  
找到了上面我们需要的两个最重要的我们现在就来手工处理吧  还是那句话 需要基础
00401550 处 push esi
00401550    56              push esi
00401551    8BF1            mov esi,ecx
00401553    6A 01           push 0x1
00401555    E8 56020000     call <jmp.&MFC42.#6334>
0040155A    8B46 60         mov eax,dword ptr ds:[esi+0x60]
0040155D    90              nop
0040155E    90              nop
0040155F    E8 123E0000     call 明码比较.00405376
00401564    F9              stc
00401565    98              cwde
00401566    F9              stc
00401567    83EC DC         sub esp,-0x24
0040156A  - 0F84 0C580000   je 明码比较.00406D7C
00401570    F8              clc
00401571    83ED 04         sub ebp,0x4
00401574  - E9 83590000     jmp 明码比较.00406EFC
00401579  - E9 D9590000     jmp 明码比较.00406F57
0040157E    D2CE            ror dh,cl
代码如上 此时我们需要找到编辑框Hex内容push 地址
也就是我们需要在0040155d处修改的地址
Ctrl+F2 重新载入 F9运行Ctrl+G输入_mbscmp 下段 点击CM的确定断下 看堆栈
0012F8AC   00407672  /CALL 到 _mbscmp
0012F8B0   73DFC710  |s1 = ""
0012F8B4   00403024  \s2 = "548484"
0012F8B8   73DCF07C  offset mfc42.#4234
0012F8BC   73D323EB  返回到 mfc42.73D323EB
0012F8C0   73DCF07C  offset mfc42.#4234
0012F8C4   00000111
得到  403024 与_mbscmp
Ollydbg 数据窗口Ctrl+G 来到403024 找到403020 至此我们需要的一些字节已经找完
继续上步  0040155d处 Push 00403024
push eax
_mbscmp函数
add esp,08
test eax,eax
jnz 0040157e
push eax
push eax
push 00403020
mov ecx,esi
call 4224
pop esi
retn
结束 扩展下爆破吧
载入Ollydbg _mbscmp断点 确定断下后 Ctrl+F9  F8一次来到 00407672处
赋值寄存器 Eax为0 即可
关于写代码 找程序空代码处 比较Eax处指向空代码 然后跳回保持堆栈平衡即可
没什么技术含量 让大家见笑了

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



原帖地址:http://hi.baidu.com/c3ksoysauce/item/f01a5460939eaf2fa1cf0f94

















免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
wycomcom + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Emil 发表于 2013-3-8 15:11
沙发自己做!~求热心,每天不用也浪费啊!·呵呵
qq919740 发表于 2013-3-8 15:22
℡Black星辰 发表于 2013-3-8 15:25
y65980 发表于 2013-4-7 13:48
学习了 ·····
dmxayjn 发表于 2013-6-4 15:45
晕乎乎的,看不懂
马斯维尔 发表于 2013-9-13 13:41
这篇文章写得真好! 不过我基础太差,这些patch的代码确实需要基础啊。 只能照着做出来。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表