首页
社区
课程
招聘
[原创]新手的一次crack实录
2004-11-29 08:59 4736

[原创]新手的一次crack实录

2004-11-29 08:59
4736
昨晚进行的一次crack 是我的第1.5次crack,上次的还没搞定..下面写的可能有些问题,清各位多多指教.

目标: 文件加密器  FDET V3.0
步骤:
1. peid v0.92 侦测壳的类型
2. 显示的壳是 LCC Win32 1.x -> Jacob Navia <没见过这个> VC6.0编写的
3. 用 PROCDUMP.EXE 1.62 final 选择 unknown 类型进行脱壳
4. 可是奇怪 的是 加壳后的有1.01M大小 而脱壳后是876KB 以前我脱壳后的都要比以前的大3-5倍呢.
5. 运行脱壳后的程序 其软件序列号: 8216-21669-7457, 我按照其格式输入 软件注册号: 1234-56789-7979        // BA8B-69921-9214
然后提示 "对不起 你输入的注册码错误 不能注册!" 且弹出的提示窗口的caption为 "Error".
6. 打开w32dasm8.93 gold版, 打开脱壳后的exe, 然后 选择加载处理
7. 然后选择菜单的 参考 的 串式参考 输入"对不起 你输入的注册码错误 不能注册!" yeah, we get it!
8. 获得错误提示的虚拟地址后,向前找,就找到了正确的提示的地址,然后就继续向前搜索 果然找到了

* Reference To: CRTDLL.strcmp, Ord:0242h
:004128F0 E8D31E0000              Call 004147C8                // *************
:004128F5 83C408                  add esp, 00000008       
:004128F8 83F800                  cmp eax, 00000000        //
:004128FB 0F859B000000            jne 0041299C                // jne -> jmp ************* 【offset】00011EF8H or -> nop
:00412901 8D7DE9                  lea edi, dword ptr [ebp-17]
:00412904 57                      push edi
就是上面的了
9. 然后查找一下 004128FB 地址恰好是错误 密码的地址,说明 CALL 004147C8这个子程序的返回值如果<=0 表示密码与正确密码不匹配
10. 于是就有几种想法
10.1 跟踪进去找到其正确的密码 ...
10.2 就是修改上面的 jne 0041299C 为 jmp 0041299C 或者 为nop 但是可能jne的跳转还有什么其他有影响的操作,所以可能改成nop不行,就想改成jmp 于是 就不用输入密码了...
10.3 怀疑其生成的 初始软件序列号 有可能是 获取本机 硬盘序列号,CPU号,网卡MAC地址之类的东东而成,所以看如果搞清楚关系的话,写一个注册机<是叫注册机么,就是我觉得它上面的软件序列号为任意情况,我都可以产生正确的密码,这样的叫注册机么??>
11. 好像前面的代码 还有
* Reference To: KERNEL32.OpenFile, Ord:01B0h

* Reference To: KERNEL32._lwrite, Ord:0291h

* Reference To: KERNEL32._lclose, Ord:028Ch
读取文件的操作,所以我怀疑正确的注册码是不是保存在某个文件里,然后在安装目录找了一下,找到了Fdet.cfg,猜想就是一个config文件<由其后缀名>,然后由ULTRA EDIT直接打开,全是二进制代码,也没看出什么...
12.然后开始设置了几个断点 主要是strcmp这个API函数 然后一路运行<提个疑问: 我设置了断点后,没有象VC那样 run to cursor的指令吗,不然可以一直自动运行到我的断点<当然中间不能有与用户交互之类的操作>,结果害的我按了很多的 “自动步进结束”<快捷键是F6>,才到了设置的断点这<因为自动步进遇到ret就自动停止了>,所以哪位兄弟知晓的话告知小弟设置一下,或者解释一下,多谢!
13.到了断点,F7一路进去,一路跟进 strcmp 的代码:
mov esi, dword ptr[ebp+08] // ebp+的表示为函数的参数 -的表示函数内局部变量 +08是第一个参数
xor eax, eax
mov edi dword  ptr[ebp+0c] // +0c 是第二个参数
or  ecx ffffffff
repnz
scasb        // (AC) <- ((EDI)) && (EDI) <- (EDI) - 1; // 我是去查汇编手册看到的 可是谁能告诉我AC是什么呢?? 不是寄存器呀 是内存?
not ecx
sub edi, ecx
repnz
cmpsb  // ((ESI)) <-> ((EDI)) && (ESI) <- (ESI)-1 && (EDI) <- (EDI)-1; 这里就是我们的比较了....
je 74f2e6dc // 这里我没跟进去了
// 再提个问题: 我跟踪的时候想把看到的ASM代码<不是大屏幕的,是右下方的代码记下来到记事本中,然而当w32dasm失去焦点又获得焦点的时候, 右下方的代码就自动执行了,结果搞了好几次, 我只好抄到笔记本上<笨方法 :-(> 哪位兄弟知道怎么好的处理方法,请告知!!
14. 突然在跟踪的时候 ,左下方出现一个 char[015] = ****-*****-****, 惊讶,窃喜,不是我的输入,也不是初始软件序列号,难道是??传说中的密码.娃哈哈哈,然后退出来,用其一输,OK!就是它了!! 然后它里面还有代码,就是注册成功后就把“注册”这个menuitem给删除了,害的后面又重装一次,继续. 对了,谁能告诉我这个char[015]是哪里来的,初步猜测是w32dasm里面自己分配的吧.
15. 现在想 直接修改里面的EXE。。<是不是叫什么 爆破?> 然后根据w32dasm找到那句jne 0041299C的offset,打开HIEW,找到地址,然后编辑其机器码,可是我发现JMP****地址的机器码不懂写,然后在代码其他地方找了几个 JMP的代码 如下:
0F859B000000            jne 0041299C  // (1)               
E960010000              jmp 004129C3  // (2)
EB3D                    jmp 004128CA
EB14                    jmp 004129B0

我根据 (1) & (2) 这样计算出C3 - 9C = 27H E960010000 - 27H = E960000FD9以为后面这个就是正确的JMP****了,结果一试,不对,郁闷了.我放弃了.外面正是AC的球赛亚,好几个门柱!!!看来他们是需要我出去看球助威才能进了 ^_^.还是那句话,哪位大哥了解转变方法的话,敬请告知!!小弟愿.....请客...哈.

一些想法:
我上面就是我晚上的一些过程,说的很乱,而且可能还有错误的地方,但是我还是想写一下,一让大家共享一下,二嘛,就是上次看雪老大说有人变相请求破解,我上次是发了一个帖子说请求破解哪个5dai的教程的思路<我确实有分析过里面的很多汇编代码的>,为了证明俺是良民,所以就大着胆子写出来了,希望大家看的时候笑的小声点瓦,嘿,否则,CS 爆你头没商量<唉,好久没C了,只有KOF97一下了>
总结:
    其实这次的很简单,只相当于工具的运用而已,何况注册机还没写出来。

^_^ 看球去了,等这几天我继续 看能否写一个注册机出来 ^_^.C.U.

嘿 AC米兰win了,爽.果然是偶们一去看求,就赢:-).

谢谢大家的指导!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
打赏
分享
最新回复 (11)
雪    币: 414
活跃值: (531)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
nig 4 2004-11-30 08:10
2
0
//你看到了这个函数名了吗,字符比较,在这一句前面下断点,之后看堆栈里的前2个参数就可以有分晓了。
   * Reference To: CRTDLL.strcmp, Ord:0242h
   :004128F0 E8D31E0000              Call 004147C8    // *************

//OD中的快捷键是F4
     repnz  scasb  // 比较EDI的地址开始的位置 是否等于al的0,功能是求得串的长度

改成90 E9 9B 00 00 00试试
0F859B000000            jne 0041299C  // (1)   

建议换一下工具OD吧,这样你的效率比这好,如果你的英文不好,可以采用国内汉化的版本,
精神可嘉,继续努力!
雪    币: 239
活跃值: (473)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
hmimys 2 2004-11-30 08:40
3
0
支持一下,不错!
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
pendan2001 4 2004-11-30 08:41
4
0
鼓励一下,继续努力
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fredcc 2004-11-30 08:58
5
0
谢谢 弟兄们的指点 ^_^

我英文还没问题。。

我没有用OD呢,只是用w32dasm的,还有就是我下了SOFT ICE FOR NT的补丁 可是这个补丁压缩包有密码!谁知道密码的话 请告知,多谢!是再白菜乐园下的。。。
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
parkxu 2004-11-30 09:27
6
0
嗯,支持原创~
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
爱在天涯 3 2004-11-30 11:24
7
0
如果是在白菜乐园下的,那如果有密码就应该是它的网址呀!
而且你在打开压缩文件的时候看旁边的说明里有说明!
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fredcc 2004-11-30 11:27
8
0
多谢楼上的提醒,,偶丢人了。。

四、如何进行下载压缩包的解压?
  1、请确保你下载完整,文件大小应该跟网页上写的一样.
  2、[白菜乐园软件站]内很多软件都是ZIP或RAR格式的文件,大家可以下载安装 WinRAR3.0以上版本 等解压缩软件后进行解压缩。.iso文件用虚拟光驱打开!
  3、站内提供的软件如需要解压密码未注明时全部为:www.crackbest.com
  4、关于分卷文件的解压缩:首先将所有分卷文件下载到同一个文件夹,找到***.part01.rar双击解压即可.
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ttyu2 2004-11-30 14:57
9
0
楼主很粗心。
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fredcc 2004-11-30 15:01
10
0
谢谢 提醒,批评,接受!。。

我是 比较粗心 也容易激动 呵呵

改进ing...
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
cyclotron 17 2004-11-30 21:31
11
0
鼓励一下~~
AC表示accumulation register--累加寄存器al,ax或eax
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fredcc 2004-12-1 09:03
12
0
谢谢 楼上的!!
其他方面的我自己看书了解了一些 ^_^
游客
登录 | 注册 方可回帖
返回