首页
社区
课程
招聘
[求助]关于安于此生同学的教程的几点疑惑以及学习总结.
发表于: 2014-5-23 23:32 6420

[求助]关于安于此生同学的教程的几点疑惑以及学习总结.

2014-5-23 23:32
6420
最近断断续续看到了第九章,本来前面的内容无压力,到了这里被卡住了,觉得是该把自己之前的疑惑和自己的猜想写出来了...希望大家能解答我的疑惑.
1.32bit的寄存器比如EAX的低八位能是AX,AX又可以分出AH,AL,那EAX的高八位就不能单独使用了?
(我觉得好像是...好没营养的问题..)
2.TEST和CMP区别: 这种能百度的答案我自然会去百度,TEST相当于不保存结果的AND而CMP相当于不保存结果的SUB,目前是看过TEST检测寄存器是否为空.
3.如何找子函数?从一个retn往上找的第一个ret之前就是一个子函数吗?
比如
ret
push 0
ret

这样后面两句就可以看成一个子函数吗?
4.教程中说到:
LOOP指令可以帮我们完成前面例子中的事情- 将计数器ECX的值减1,判断ECX的值是否为0,如果为0就跳转到指定的地址-将像前面的例子一样。

个人觉得好像不对,不是如果ECX不为1才跳转吗?
5.
在这里新手普遍会犯一个错误,现在单击鼠标右键选择-Search for-Name(label)in current module。这个时候我们得到的函数名称是USER32.DLL库中的函数名称,并不是我们的CrackMe主程序的导入表中的函数名。菜单项中明确指出是搜索当前模块,我们现在这种情况,当前模块是USER32,因此MessageBoxA是位于该模块当中的

这句话说的是什么意思?我们看到的是的User32.dll函数表?我们调试的不是Crackme吗?还是说他显示的是CrackMe引用的来自User32.dll的函数?
6.教程9中神一样地看出这段代码是检测字母的,如何做到?要学多久才有这种水平...我只能按着教程一步步做...硬着头皮只猜出了大小写转换的一段..."搞定"了这个CM之后兴冲冲地去找一些简单的CM..却发现连自己写的程序都破不了啊...
6.5. 如果看完这些教程自己能到达什么程度?个人有编程基础,破解方面完全空白.
7. 希望自己坚持下去.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
首先AX 是 低16位   AH(高8位)  和 AL(低8位) 分别占 8位

没有高16位的命名 但可以通过计算获取到
2014-5-23 23:47
0
雪    币: 70
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
搞破解,哥们,我过来人,给你个建议:不要拿这些例子来学习破解,直接找个大的项目开始啃,慢慢的很多东西都就会了。不懂的直接百度……当然,也要看个人,反正我就是这样学过来的,论坛里的crack me,我压根就没碰过。。。。。不碰的理由有四个:
第一,没什么实际的意义,除了可以练练手,掌握些基础知识外,没其他用途。
第二,我做一个有价值的项目,不仅能学到东西,基础知识也可以掌握,也能带来实际的效益,双赢。
第三,参加工作,没太多的时间做些没有实际效益的事情上。
第四,破解,最终的目的还是要逆向一些实际有价值的项目上的。
当然,我的方法不是每个人都赞同,也许有人更加倾向于先易后难,而我恰恰是相反的,先难后才易。
2014-5-23 23:52
0
雪    币: 341
活跃值: (153)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
坐等陈二狗
2014-5-23 23:53
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
感谢指点.
2014-5-24 00:09
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
一开始骨头太硬啃不动,或者说我现在大概连骨头都找不到.....不知就项目是什么项目呢?直接拿商业软件试手?其实我学习这些还不知道实际中能够感谢什么..纯粹是觉得....挺帅的...
2014-5-24 00:11
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
小妹陈二狗是谁啊?
2014-5-24 00:19
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
8
1.32bit的寄存器比如EAX的低八位能是AX,AX又可以分出AH,AL,那EAX的高八位就不能单独使用了?
  
 :::EAX低16位是AX   EAX高8位没有对应的寄存器,可以通过指令获取其值..


2.TEST和CMP区别: 这种能百度的答案我自然会去百度,TEST相当于不保存结果的AND而CMP相当于不保存结果的SUB,目前是看过TEST检测寄存器是否为空.
   
:::随便找本大学汇编教材上面有解释...

3.如何找子函数?从一个retn往上找的第一个ret之前就是一个子函数吗?
  
 :::这个不一定,如果函数有很多处返回,有多个ret怎么办,按你这么找就行不通了,这个靠积累...

4.教程中说到:

引用:
LOOP指令可以帮我们完成前面例子中的事情- 将计数器ECX的值减1,判断ECX的值是否为0,如果为0就跳转到指定的地址-将像前面的例子一样。
个人觉得好像不对,不是如果ECX不为1才跳转吗?
  
:::ECX你可以理解为高级语言中的循环变量i,随便找本大学汇编教材上面也有解释...


5.

引用:
在这里新手普遍会犯一个错误,现在单击鼠标右键选择-Search for-Name(label)in current module。这个时候我们得到的函数名称是USER32.DLL库中的函数名称,并不是我们的CrackMe主程序的导入表中的函数名。菜单项中明确指出是搜索当前模块,我们现在这种情况,当前模块是USER32,因此MessageBoxA是位于该模块当中的
这句话说的是什么意思?我们看到的是的User32.dll函数表?我们调试的不是Crackme吗?还是说他显示的是CrackMe引用的来自User32.dll的函数?
 :::程序会调用系统dll例如User32.dll中函数,如果你在MessageBoxA这个函数里面查看当前模块的函数列表,
显示的当然是User32.dll的函数呀,因为MessageBoxA的实现代码是在User32.dll这个模块中的嘛.


6.教程9中神一样地看出这段代码是检测字母的,如何做到?要学多久才有这种水平...我只能按着教程一步步做...硬着头皮只猜出了大小写转换的一段..."搞定"了这个CM之后兴冲冲地去找一些简单的CM..却发现连自己写的程序都破不了啊...
 :::教程只是抛砖引玉的作用,要提高分析算法的能力,得靠自己多加练习了...


7.希望自己坚持下去.
不能完全指望教程...,教程只是辅导的作用,练习才是王道...如果我5年前看老外的教程的话,
我或许也有你这些疑问... 过来5,6年,现在来翻译这些教程,我可以很容易理解作者讲的这些东西,
这些东西由于之前的练习,在脑海中已经形成了思维定式,所以作者这么讲,我会觉得理所当然...
所以自己独立思考,多实践,多问,时间长了,你的这些疑问会逐渐消失...

你提的这些问题很好,我刚学的时候也有你这些疑问,我当时问我老师的时候,他会奇怪这么简单的问题
你都不会,呵呵,殊不知初学者有这样的问题很正常...

加油,能坚持下去,就能学会

前两个星期,在整工作上的问题,没有更新翻译,明天继续更新15章
2014-5-24 00:37
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
9
擦,小妹,你怎么能这么黑偶,  这是小说里面主人公...  擦  
2014-5-24 00:42
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
非常感谢你的详实的回答!
2014-5-24 05:13
0
雪    币: 1560
活跃值: (2146)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wbs
11
破解要循序渐进呀 不肯能一蹴而就!先入门吧!
2014-5-24 08:19
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
恩...我正在缓慢入门中.
2014-5-24 12:34
0
雪    币: 341
活跃值: (153)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
13
我也不知道小妹是谁,我只知道陈二狗是楼下反应最激烈的那位
2014-5-24 14:18
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
14
  你反应挺激烈的
2014-5-24 14:29
0
游客
登录 | 注册 方可回帖
返回