算法我粗看了一下,没详细分析,抱歉。这两个例子是我研究
高效率的断法的副产品,看能不能在.NET中适用。尝试了一些
少见的断法,但似乎不适用于.NET.
今天刚看到一篇.NET的好文,精力暂时顾不上:
【原创】看雪读书月之初夜—doNet程序的接触
--------------------------------------------------------------------------------
标 题: 【原创】看雪读书月之初夜—doNet程序的接触
作 者: cater
时 间: 2008-08-02,18:38
链 接:
http://bbs.pediy.com/showthread.php?t=69869
我简单说下我的断法(我认为高效率的):
练习一:
方法1.消息断点+内存访问.
方法2.MFCSPY.
【原创】mfc spy,把mfc程序的内部函数揪出来
--------------------------------------------------------------------------------
标 题: 【原创】mfc spy,把mfc程序的内部函数揪出来
作 者: goldenegg
时 间: 2005-01-14,00:05
链 接:
http://bbs.pediy.com/showthread.php?t=9805
练习二:
很滑稽,作者精心设计的反调试形同虚设,用消息断点就轻易断下,根本感受不到反调试.
但作者对反调试的破文解释很详细,值得一看.
有几种少见的断法,不实用:
{
galihoo
初级会员
资 料:
注册日期: Mar 2006
帖子: 9
精华: 0
声望: 10 100 2006-06-27, 17:17
--------------------------------------------------------------------------------
riijj_mfccm1_r2 运气爆破成功!!
先用win32asm查找dialog
找到两个,应该其中一个就是弹出成功的对话框
0040340F和004036C8
第一个肯定是本身的对话框
那么第二个就是了哦
IDA分析, 发现被004012B8调用
看看这一段
.text:0040129A mov dl, [eax+esi]
.text:0040129D mov bl, [ecx]
.text:0040129F cmp dl, bl
.text:004012A1 jnz loc_4013DB
.text:004012A7 inc eax
.text:004012A8 add ecx, 4
.text:004012AB cmp eax, 10h
.text:004012AE jl short loc_40129A
.text:004012B0 push edi
.text:004012B1 lea ecx, [esp+0F0h+var_6C]
.text:004012B8 call sub_4036C0
猜测 .text:004012A1 jnz loc_4013DB
这个可能就是跳到不知名的位置去了..哈..测试,改成jz loc_4013DB
爆破成功!!
运气
我不会分析算法,希望得到高手指点
leyhom
初级会员
资 料:
注册日期: Jul 2006
帖子: 10
精华: 0
声望: 10 105 2006-08-16, 17:26
--------------------------------------------------------------------------------
riijj_mfccm1_r2 的破解思路
首先利用“黑客资源”查看源程序,发现获得成功注册后会出来一对话框,记住它的窗口号是103,换成16进制就是67,然后在OD里面加载riijj_mfccm1_r2,搜索push 67,意思就是找到它注册成功的提示,它不是注册失败没有提示吗?我们就从成功入手。
004036C8:push 67 //就是这个窗口
我们往上看,上面肯定有压入注册名的地方,经过反复测试,发现在00403642处,在此下断,然后就一步步跟吧,经过好大一步,发现它是在0040129F处开始做试验码的比较,算法让我跟了半天,一看就头大,也没有去继续跟
注册名:leyhom
注册码:PCGGEFVQPQSLNUMQ
chinglq
普通会员
资 料:
注册日期: Aug 2007
帖子: 187
精华: 0
声望: 16 149 2007-10-25, 11:04
--------------------------------------------------------------------------------
97楼的Riijj Crackme-MFC 第 1 版
关键是下断点,输入用户名,假码,点“注册”没反应。只有输入正确,才出现成功对话框。
字符串无可用的、API也很难断,后来用_operator new断下,查了下,是明码比较,用户名是固定的。结果是:
name: childtoy
code: ULBKLSUUTKTUKSNG
算法分析还不大会,但总算还能追码,也算一大进步!
}