首页
社区
课程
招聘
[求助]身陷学海,顿首求教
发表于: 2008-4-23 02:48 11506

[求助]身陷学海,顿首求教

2008-4-23 02:48
11506

各位兄弟姐妹们,你们好

小弟是一所普通学校03级的学生
参加工作快一年了,做的是SP(server provider 移动增值业务)这行,用的全都是别人的平台,做的事情就是调用别人写好的API
心中一直的对OS,对汇编充满了向往
学生期间的汇编成绩还不错*_*,可那都是书本上的知识,没什么用,也忘的差不多了

跟着论坛的教程做过几个CM,最简单的那种,爆破过,也分析出过最简单的算法,一点成就感都没有,兴奋不起来
现在就是在这种上上不去,也不是一点都不懂的尴尬地步。。。(什么都不懂,还不怎么想从头来)

几个月之前买了罗云彬的《WIN32汇编程序设计》
只看到第四章。。。
因为没有全部看懂,所以进行不下去
看过北极星大哥的成长帖子,我想多做是很重要的
于是,我把那个看起来最简单的窗口程序写了好多遍,力求可以不用对照就自己写出来
后来达到目的了,可后面依然进行不下去,因为好多好多的API我看不懂,我看WIN32.HLP,有的时候又对不上号。。
有好多感觉到不可理解的地方,搞啊搞啊,搞半天,公司的事再一耽误,就停下来,过些日子还是从头来过,痛苦ing。。。
打击是不小,不像自己学JAVA的时候那样顺利,那样的风光,就这么走走停停的,很难有所进步

不是兄弟没有耐性,学java的时候,也是一坐就是好几个小时,敲代码直到手指发酸
当初忙着实习,毕业设计很赶,哥们也是三天不眠不休,愣写了出来!(乡下地方,自然很糙,举个例子,各位莫怪)
可是就是学这个汇编,学这个系统,我不知道该学些什么
刚开始吧,我想:恩,我要学的是系统的东西,前面的这些个界面啊,资源啊什么的,过一遍就OK了,不用太浪费时间在里面了
结果可想而知。走走停停的,也没学到什么东西,好像一看就明白,放下书又什么都想不起来,哎!!!
《windows程序设计》里面用的是c语言吧,我想看这个,看不懂,基础不行啊
不敢从头学起,怕时间太少,我从工作中抽时间出来,只想做最有效率的事
这个想法把我害苦了,基础打不好,啥也不行啊,我哭。。。

下午又读了一遍北极星大哥的成长故事,觉得还是多做的好,汇编和系统的东西不像java那样简单
java入门是个比较简单的,而且不用太深入就可以做出实实在在的东西来,还能用来糊口

小弟自觉对OS有一种类似痴迷的情绪在里面
对各位的知识深度特别的佩服,也想像大家一样,对自己所操作的系统了如指掌,对自己所学的东西可以达到一种触摸到根的深度的了解!
我以为这必然是需要汇编的,也不知道对不对,我是不是应该从C学起?(大学学过C++,现在也就能打印个乘法表了,暴汗中)

小弟志在有朝一日能自己写驱动,能对系统的一切了如指掌,也能参加那个什么什么比赛,也能弄个牌牌挂在俺的胸前:)

身在学海,茫然不知所措,望各位不吝赐教,指引小弟一条明路

1.我是不是要学C?
  我学C会不会是浪费时间,换句话说,我只用汇编,能不能实现我的愿望?
2.汇编肯定是要学的,dos下的汇编还要不要再学一遍,DEBUG什么的老东西还用不用学?
  北极星大哥说:要多练!
  兄弟深以为然!奈何狗咬刺猬。我练什么呀???
3.罗云彬那本书我看皮了。。扎不进去了!第四章我看的都快背下来了,放下书还是脑子里什么也没有。。。苦恼
  面对浩如烟海的API,我该怎么办,总不成去背吧?总觉得背书不是正道,是吧?
  这个是学习方法的问题,请指教
4.对汇编程序不来电,每一条指令我都明白是做什么的
  从整体上就是没个概念。。。
  这是最让我害怕的思想层面上的问题
  朋友劝我放弃,老老实实做java吧
  我不服!我是不是真的不适合这一行?

午夜辗转难眠 xia0zhuge顿首求教


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我的感觉,其实你学这个学那个,有什么用么?用不到实处,还是没用
最好的自学方法就是实际去动手操作,去到不懂的地方再回去翻翻书,以求找到解决问题的方法,这样比较有针对性,遇到过的问题解决过的问题多了,自然水平也就提高了,当然如果你的水平到了一定程度想再进一步的话,C和汇编是必需的,总不能永远停留在几个CRACKME上吧?
我上大学那会学的是工商管理,跟电脑一点不搭边,刚看汇编和C++那会真是一个晕啊,几天几夜下来脑子里全是一片糊的,还好我坚持下来了,虽然现在我的汇编和C功底也菜的很,写个补丁还四处碰壁,但至少比当初己经好很多了,也不像以前那样对什么都是糊里糊涂的了,看到一些东西胸中也有了自己的一些想法,万事开头难啊,坚持最重要
你说你现在为了这个把公司的耽误了,我觉的这个不对,你这是捡了芝麻丢了西瓜..当然如果你想端逆向分析这碗饭我也没什么说的
另外,看了你最后一段,我觉的你的学习方法有问题,典型的死读书,说的不好听莫见怪,什么C什么汇编,你就不能在实际操作中边做边学吗?搞体育的说是以赛代练,咱们得找一个适合自己现阶段水平的目标来练,分析目标解决目标的过程中去学习,罗云彬的那本汇编书我也就看个大概,很多东西也不懂,你非要扎进去干嘛呢?你在分析问题的过程中碰到不懂的指令不懂的地方再回去翻翻书不一样吗?
我也不记的几个API,就知道几个常用的,但MSDN和百度是最好的教师,有什么API不懂查查MSDN啊,大学都毕业了几个英文字母还把你难倒了吗?至少金山词霸总有一个吧?
汇编程序不来电,每一条指令你都明白做什么,就是没个概念,这不是死读书的后果吗? 以前听人说一计算机高手,汇编那个牛啊,分析一软件坐那半天不动的,人家过去一看,丫在系统函数里转幽了一下午,哪条指令都认识,就是不知道干啥的,这是为啥?不就是缺少分析经验吗?你自己也认识到得多做,但为啥落不到实处呢?

最后给你几句话,没有谁不适合哪一行这个说法,人哪,只要有一股认准了就不放手的死性子,干什么都能干的不错,就怕你没那个毅力,坚持不下去,半途而废一事无成啊,只看见賊吃肉没看见賊挨打,高手不也是从菜鸟成长起来的么
找准目标,找对方法,坚持下去...
PS:对一些纯技术性的东西我不在行,等待楼下众位高手给你解答吧
2008-4-23 03:37
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
感觉 C 要学,主要是 C 比 C++ 学起来容易些,但又能完成任务

WIN16 ASM 没必要学了

学好 C ,再看 WIN32 ASM 你就要感觉了,道理一样

我和你反过来,几乎每条指令都不太清楚,但主要是去感觉它的流程,感觉出来就好了
2008-4-23 10:12
0
雪    币: 107
活跃值: (1693)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
引用两句话:
真正的程序员学C,聪明的程序员学Delphi
学好C语言 走遍天下都不怕
2008-4-23 10:17
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
5
呵呵,不要太心急,学习一个积累的过程。推荐一个blog看看,看是否能看懂,里面是入门的东西。
http://hi.baidu.com/combojiang
2008-4-23 10:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我觉得楼主不是不想练,也不是没有耐性。而是不知道练什么,怎么练。您的回答没到答到点子上啊。

to 楼主:我也是才开始摸的超级菜鸟,与你有同样的问题。不过我是C还过得去,汇编一塌糊涂。哈哈!
2008-4-23 12:28
0
雪    币: 191
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主其实没必要这样  万事开头难,我c没问题,汇编刚学的时候也是指令都可以看懂但是就把握不住流程,比如call调用的时候一开始总是担心自己改了没有push的寄存器,但写了几个程序后发现熟能生巧啊,慢慢的思路清晰了,什么东西都是一样,坚持住 世界上没有笨人只有不能坚持和不开窍(这个主要是没兴趣,有兴趣什么都能学会,找对象不用别人教吧???咋是人都会呢,道理就是如此)的人,只要坚持住了自己想做的事情就能做到  钦赐~~~
2008-4-23 15:57
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我也求教啊..
后天我就期中考了,现在还是满脑子算法的事
2008-4-23 21:18
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
9
同样的东西做N次,能不消磨人的热情么?
又不是考试,难道还得背下来才能用?
书是用来查的,不是背的,手上的工作,知道在哪里能找到你想要的东西,能边看边做就够了
都像你这么学,都背书得了,什么也不用干
2008-4-23 22:49
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢各位的热情指教,感谢看雪的工作人员

to:我是瑶瑶
我没有敢耽误公司的事,事关一日三餐,马虎不得*_*,这些学习都是自己的爱好而已
学习方法确实有问题,只因自己在学习上也曾是个自负的人
以前也。。教过别人怎么学习的人, 哎。。。
唯独离开学校后在汇编的学习上,迟迟不见有什么进展
四周嘘声一片,朋友都劝我别搞了
诸多压力一拥而上,我就晕菜了,学习的路便越走越窄了
搞的一点自信都没有了。。。。

感谢各位的鼓励和当头棒喝,让我又找回了一点自信
昨天已经实现了从主窗口传值到MessagBox里面
并记录显示左键的单击次数
各位别笑啊,东西虽小,对我可有不少意义
以前我就想:我可以记录单击的次数,可是怎么和前面的字符串拼接起来呢
java中就用“+”就OK了,汇编咋办?
那传说中的汇编可是底层的啊,得从内存中操作吧
可它们在内存中可是两块甚至两块以上的不同地方呆着呢!~~
这可咋办呢。。

其实系统中既然提供了wsprintf这种API了,带进去不就完了吗
现在我想通了,何必事必躬亲呢是吧
巨人就在前面蹲着呢,咱不上去站站太对不住人家了吧。。。
况且以我现在的实力就算是想去搞搞明白,也是蚍蜉撼大树,可笑不自量
可笑啊可笑

想通这些就这好了,学习嘛,和钻研是不一样的
我得有选择,不能学习的时候还在钻研,学习时就虚心的学习就好了
知识是学不完的,思考固然重要,但要思考在最有意义的地方!



我最开始也是这么想,看书的时候也不仔细
这个我用不到,那个我也用不到,过一遍就好了
就这么着,到最后啥也看不懂了。。
后来改了,一遍一遍的写那个窗口,熟能生巧嘛

谁让老天爷不公咱可能没天份,那咱走笨路子还不行啊?!
可当初谁TM说的“熟能生巧”?丫怎么不加一注释:这个熟,不是指的重复,重复无效!

感谢那些为指明学习道路的前辈
说学c的占多数,呵呵,好东西多得是,我不能再三天二头的换目标了,换来换去的,信心都没了- -!
我决定先学汇编,等我能用汇编来解决实际问题了,或者汇编解决很麻烦了,再去学c吧
到时还要再来麻烦各位多多指教

笨笨雄版主 批评的对

呵呵,一段弯路走来,心情一直灰蒙蒙的
总算想明白了一些问题
浪费了的时间不会再回来了,就当交学费了。

最后与和我一同学习的兄弟共勉:
勤能补拙是良训     ;这个勤,可不是指体力重复劳动
加油加油加油!

感谢各位的鼓励,我会加油的!
2008-4-24 10:39
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
知我者,bill君也!
呵呵
可能咱们的问题太笼统,太大了,不好回答吧
咱还是自己办法吧
没人出题目了,自己出吧
嘿嘿,专捡自己力所能及的来 反正尽量少闲着估计就好了
2008-4-24 10:51
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我感觉悟性最重要,还有心灵的沉静程度!其他的真的不重要
2008-4-24 19:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
9楼说的在理,光背书显然是不够的,你自己也意识到了这个问题,我和你有过相似的经历,不过当初应该还不远不如你,记得我大2的时候和体育系的女同学(中学同学)去校机房上网,怕有半个小时了吧,急的满头大汗硬是没开的机。原因是校机房的电脑和我们系机房的电脑张的不一样,一个立式的一个卧式的,我当时就超级纳闷,咋把这玩意搬到了塞电脑下面(我一直把显示器叫电脑,至于主机我当时一直当他是比较重要的辅助设备,光知道好些东西要插他才能用),使劲的在上面摸开机的哪个大疙瘩按钮,可惜哪个机器偏偏就没有大疙瘩,其它小疙瘩也不知道做什么用,提心掉胆的偷偷按几下发现没反应,干脆坐那幂思苦想我那疙瘩跑哪了。后来还是女同学过来问我怎么还不上机啊,顺便小手轻轻的准确的点了下开机键。
这还只是一个例子,学生时代俅事多的很,也曾在纸上写好了程序坐在电脑前面幂思苦想把程序输入到什么地方它才运行,也曾抱着《操作系统》开着电脑想对照W98来学,甚至工作以后从事了ARM系列嵌入开发,要修改驱动的时候还傻傻的在研究8088系列汇编指令和寄存器。
知识的极度片面性,成了在校学生最大的弱点。许多对高手来说不屑一顾或理所当然的常识,却成了许多新人无法逾越的门槛。
对于楼主来说,其实也是因为知识瓶颈而影响了对所学知识的应用,现在可以一方面从大处着眼,从原理上,大致功能结构上来系统的熟悉下相关方面的知识,多看一些他人评论。再一个就是找具体例子来实战,那就是不会时就查书网上搜索,就算最后没搞下来 你的知识也在无形中增长了好多,这样慢慢好多问题会变的简单
2008-4-25 17:08
0
雪    币: 222
活跃值: (241)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yys
14
完整地看过各位的帖子,感觉1.2楼就是我们这些初学者的影子,真是这样的, 想学却摸不着门.
2008-4-25 17:14
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
15
这的确是初学汇编最令人头疼的问题,总是没有办法把一行行的汇编代码,和我们心中的程序运行逻辑流程联系起来。

为什么大家都谈到C,我觉得学C的作用,不单单在于学会这门语言,更重要的是通过对C的学习,掌握编程中基本的程序运行流程,培养编程的思想。

程序是数据结构+算法,而算法无论如何复杂,都逃不开顺序结构,判断结构,循环结构这些基本的框架。高级语言的程序是这样,汇编语言的程序也是这样。学会了C语言框架中的程序流程控制之后,转到其他的语言如Delphi中时,你会发现这部分内容都是共通的,不同的只是语法格式而已。也就是说,你应该从超越具体编程语言的高度,来审视你的程序,找到不同语言之间的共通的东西。而汇编,恰恰是能体现这种“共通的东西”的语言。

你说你对汇编代码的整体没有概念,实际上,也就是还缺乏一种能力,把汇编语言的代码,和你心中的高级语言所代表的程序流程,对应起来的能力。这正是逆向工程要求的基本能力,因为逆向的过程,其实上就是这样的过程。

你说你对老罗的书已经看得很细了,那么我不知道你有没有注意到,书中经常在编完了一个程序之后,对程序再进行反汇编。也就是说,作者经常会告诉我们,我们这样写出来的程序,编译后的语句会是什么样子。在这样的过程中,我们实际上就是在逆向,就是在把我们写出来的源代码,和编译后的代码对应起来。反汇编的结果告诉我们,我们的函数会是什么样子,局部变量是怎么存取的,我们的判断结构(.if….else…)和循环结构(.while,.repeat….until…),是怎么样编译成一行行的代码的。从中我们会了解程序运行的真相。

因此,我建议你在用win32汇编编写完一个程序之后,一定要对它进行反汇编,将反汇编的代码,与你原先的源代码进行详细的对照,认真地揣摩汇编代码中体现的程序流程。在这之后,在编写C语言或其他语言的程序的时候,在调试的过程中,你也应该同样使用OD这样的反汇编调试工具,来调试你的代码,帮助自己建立起高级语言源代码和汇编代码之间的对应联系(记住,OD本质上是一个调试工具,而不能只被当成破解工具,你首先应该学会用OD去调试的,不是你要破解的程序,而正应该是你自己写的程序!)。通过这样一次次地“汇编+反汇编”,你最终一定可以把握住汇编代码的整体,解决这个思想层面上的问题。
至于API,这又是汇编的一个特点,汇编语言没有对API进行封装,VC++进行了半封装,而java,那是全部地封装,汇编和java简直处于两极。

对API的具体调用,应该说没有必要采用硬背的方式。API就是微软提供给我们的接口,我们只要在需要用到它们的时候,按照MSDN中的介绍,正确地调用它们就够了(当然,深入的调试要进入API内部了解其流程,这是以后的事了)。MSDN就是手册,就是程序员手头随时供翻阅的工具书,就是字典,不可能也不必要去死记硬背。
2008-4-25 21:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
呀,在这看到了小聪版主……句句在理,看来得实践。
我想我现在水平可能还不及版主呢,刚刚补了点16位汇编的基础知识,也刚刚拿到罗的那本书……其实对汇编的追求,以及来到看雪,都是因为想了解下系统底层,本意并非破解,但是也明白汇编才是基础。有时候都迷茫,马上都64位时代了,学32位汇编是不是太晚了?其实想想,32位不也是16位来的?那些学过16位的学32位应该会很容易吧。恩,从现在开始,加油了~
2008-4-25 21:51
0
雪    币: 107
活跃值: (1693)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
17
做好自己主要的工作 当做业余兴趣就可以了  我们现在还要学嵌入式LINUX呢 郁闷!!
2008-4-25 22:13
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
大学的时候学过一点16位ASM,不过基本上全还给老师了。
现在32位ASM基本上是靠C++代码反汇编回来学习的。
VC的编译器DEBUG模式编译出来的汇编代码风格很有一套,也很容易看懂。如果直接学习汇编,养成自己的风格习惯后,再去看VC的反汇编代码,反而会不习惯吧?
C的反汇编多看看,有时候对一条C代码会被编译成什么样的汇编指令也多多少少有点感觉……
2008-4-26 09:30
0
游客
登录 | 注册 方可回帖
返回
//