专业利器

###编辑器
现在最爱VIM

  • UE(收费)
  • RJTextEd (免费,推荐使用)
  • pspad(打开文件有点慢,估计和RJ互相参考了,不知道谁抄谁的)
  • editplus (缺点还是蛮多的,但是小巧精悍,以前的最爱,盗版自律抛弃了)

####浏览器
myie(http://myie9.net/) (现在可供选择的很多,好用的不多)

  • 双核可以调整速度,但是myie不用调整速度就很快。
  • myie非常稳定
  • myie兼容性好(IE嘛)

####文件管理器
totalcommand

  • (汉化版简直就是另一个产品,打死我也不用原版)
  • 查找功能、文件历史记录功能,其它基本不用

####文件比较器
beyondcompare (小巧精悍,好破解)
Araxis Merge (比较强悍,没怎么用过)

####十六进制编辑器
winhex

####程序管理器
我的工具箱(就是我的,呵呵)
myuninstall

####图像截图
snagit(非常好用)
hypercapture(文字识别好)
faston Capture (个人免费)

####图像浏览
faston ImageViewer(个人免费)

####远程桌面工具
xmanager/vnc

####版本控制
svn/git

####群聊
mIRC
qq群
微信群 2015add

####抓包
wireshark(开源)

####网页分析
firebug
Fidller
HttpAnalyzer(商业)
IECookiesView(主要很多浏览器不自带)

####设备模拟
mimic(生活所迫)
Boson NetSim

####FTP工具
filezilla
Tftpd32(tftpd, dhcpd syslog)
3daemon(HP收购了,哎,就是这么残酷)

###PE工具
debug.exe
peid
PE Explorer
ollydbg
softICE
trw http://blog.liutaotao.com
w32dasm/IDA

####系统分析工具
http://www.sysinternals.com http://www.nirsoft.net/
procexp    CurrProcess
Procmon (all in one) OpenedFilesView, ProcessActivityView (监控)
tcpview    CurrPorts(更强些)
— MyUninstaller

####IDE
IDEA add 2013

eclipse
eclipse++就是插件一大堆的eclipse,麻烦的是我得去找,好处是我有更多的选择权和扩展权。) 越来越鄙视vs.net,即便是 2010也不行,失望。

####JAVA工具
VisualVm(性能分析)
jdgui(反编译)
proguard(混淆器)

Web开发演化

##Web开发演化

  1. 静态 http javascript css
  2. cgi模式
  3. 面向过程
  4. 面向对象经过了两个阶段(sevlet, jsp)
  5. 事件驱动方式(asp.net服务器控件)
  6. 分层(本质解耦)
  7. WebService (SOA)
    8.各种开发框架 MVC、 MVP、ORM、AOP、IOC
    MVC、MVP(都属于 视图、模型、控制解耦)
    AOP、IOC

OllyDbg学习路线

  1. 了解软件(注册过程,是否有壳)

  2. 有壳脱壳

  3. 快速定位(串定位、API定位、消息定位、内存定位等。方法越多,技术越高)

  4. 分析流程

  5. 爆破、补丁(动态补丁、程序修补)、注册机.

###学习路线

#####C语言

http://oss.org.cn/ossdocs/gnu/linux/gdb.html

#####Windows 程序设计(第5版)(上、下册)

http://www.kuqin.com/networkprog/20080512/8362.html

http://www.bccn.net/Article/kfyy/cjj/jszl/200412/429.html

#####组成原理&微机原理

#####汇编&win32汇编

http://baike.baidu.com/view/33704.htm

http://www.aogosoft.com/

http://baike.baidu.com/view/270236.htm

#####ollydbg软件分析 (windasm+softice)

######简介

http://book.51cto.com/art/200806/77871.htm

######OllyDbg入门系列

http://bbs.pediy.com/showthread.php?t=21748

http://bbs.pediy.com/showthread.php?s&threadid=21284

http://security.ctocio.com.cn/hacker/466/9075966.shtml

#####keymaker

http://sec.chinabyte.com/298/8914298.shtml

OllyDbg常用断点

http://safe.it168.com/ss/2007-06-07/20070607038001.shtml

OllyDbg文章合集(破解的基本都是它了)

http://www.pediy.com/

http://www.anqn.com/ollydbg/

调试器

windbg框架

http://blog.csdn.net/zhyhang/archive/2007/02/07/1504937.aspx

断点

http://book.51cto.com/art/200806/77880.htm

http://book.51cto.com/art/200806/77881.htm

重要概念

要搞清各API函数的定义(查看相关API手册)。

API函数基本采用的是__stdcall调用约定,即函数入口参数按从右到左的顺序入栈,并由被调用者清理栈中参数,返回值放在eax寄存器中。因此,对相关的API函数要分析其前的push指令,这些指令将参数放进堆栈以传送给API调用。整个跟踪过程中要关注堆栈数据变化。

C代码中的子程序采用的是C调用约定,函数入口参数按从右到左的顺序入栈,由调用者清理栈中的参数。

有关调用约定、参数传递等知识,可以从本书第4章获得。阅读上面代码时,需理解的GetDlgItemTextA函数原型如下:

UINT GetDlgItemText(
HWND hDlg, // 对话框句柄
int nIDDlgItem, // 控件标识(ID号)
LPTSTR lpString, // 文本缓冲区指针
int nMaxCount // 最大字符数
);
GetDlgItemText采用标准调用约定,参数按从右到左的顺序入栈。例如本例中的汇编代码:
004011AE push 51   ; int nMaxCount
004011B0 push eax ; LPTSTR lpString,
004011B1 push 6E ; int nIDDlgItem
004011B3 push esi ; HWND hDlg
004011B4 call GetDlgItemTextA
当GetWindowText函数执行后,将把取出的文本放到由lpString(LPTSTR是一个长的指针,指向由空字符终止的字符串)指定的位置。如想看到输入的字符串,跟踪的时候,在4011B0一行停住,在eax寄存器单击右键,执行菜单“Follow in Dump”命令查看数据窗口中的内容,当然此时数据窗口中没什么有价值的东西。继续按F8键单步执行完下面一句:

004011B4 call edi ; GetDlgItemTextA函数取姓名

此时GetDlgItemTextA函数已将字符串取出,放到eax所指的地址里。数据窗口右边字符段显示出刚输入的字符“pediy”,如图2.17所示。

(点击查看大图)图2.17 数据窗口查看字符

断点

更多阅读

http://book.51cto.com/art/200806/77976.htm

http://book.51cto.com/art/200801/63515.htm

http://book.51cto.com/

我们为什么开发,我们为谁开发,我们开发什么

#核心与本质
简单的回答下问题: 1因为我们选择了这个行业、为了活命;2我们为能够给我们带来利益的开发;3开发能够给他人带来效益的。
无论做什么,都需要谨慎地考虑这个行业或领域的生态圈。没有合理的生态圈,没有合理的利益链,就没法去做,即便去做了,也是要出问题的。
考虑一下几点:
它的生态圈是什么样子的,如何运作的。
有没有经济效益、有没有社会效益。
第一个为先,没有市场,就没有了生存也就没有以后。

  1. 商业模式
    欢迎,热烈欢迎。没有商业,怎么来支持开发。
  2. 开源的
    还好,只限于开发平台和OS,没有设计开发人员的核心利益。
    Web开发
    看重的是性能、成本、(投入)开发效率
    定位,是一种眼光,更是战略决策。
    做出选择开发,要带来效益,注意红光豪赌蓝光最终失利押错注的教训
    一、Web开发
    考虑:企业用、什么样的服务器、管理人员的技术阵营和水平(windows多,asp就开出来了)
    不过web服务器要求跨平台(unix,linux,windows),apache首选。
  3. JAVAEE阵营 ,火药味很浓 (首选,IDE都没个像样的,历史悠久,框架多,问题也多。可移植性主要优势)
  4. .NET阵营 (开发快速,MS支持的好,不能很好的跨平台,其实就是MS的产权保护,一切跟着我走)
    3 PHP
    4.PYTHON,RUBY阵营
    当做自己的玩具,没什么商业价值
    我的选择JAVA,.NET
    二、桌面开发
    1.Windows是绝对的老大,要照顾用户群 (盗版问题、教育问题(大家不会用linux,又不用花钱)),好用,不要钱
    2.Linux不考虑,考虑也要它支持跨平台的。 QT
    考虑:功能、界面、开发速度
    以前:VB Delphi VC(比较慢)
    现在:.net 时代,VC.Net(游戏、性能), C#(开发速度、界面、小程序,google推出的桌面插件)
    桌面widget(小程序,插件程序),想法不错,虽然现在时网络时代,但IE,firefox得外观不够炫
    看下widget引擎(javascript,html,css)
    我自己的模式 C#开发快速,开发自己用的小工具
    三、嵌入式开发(必然)
    看看以后有没有机会

开发内容 工具和游戏

软件开发

###软件开发

  1. 大体需求, 整体设计
  2. 一个具体需求,简单设计(原型开发),一个实现。
    注:  从用户的角度考虑使用,然后你提供接口 
    
  3. 需求影响设计,设计影响实现
  4. 遇到不好的实现,重构!设计出了问题,说明你在设计时没选好策略。选择好的设计,重构下实现
  5. 不知道那种设计更好时,仔细的分析下,如果还是不知道,选择一个比较好实现的再说。
  6. 不知道如何设计,请教别人。