1-读取文本框内容常用的函数(这里的“A”表示ASCII,“W”表示宽字符UNICODE,下同)

  -GetDlgItemTextA()<这个函数是最常用到的>

  -GetWindowTextA()

  -DialogBoxParamA()

  -GetDlgItem()

  -GetDlgItemInt()

  -GetWindowLong()

2-在逆向程序的算法逻辑时,add,mov,sub,sbb,test,cmp……等这些指令出现的地方,这些指令往往用来进行某些验证等,也是程序设计时的关键手法,在这些指令上面动手脚通常都可以找到突破口,逆向时要做好注释,防止走迷宫。


3-Killtimer()函数是一个记时API函数,例如某些商业软件的试用时间就与KillTimer()有关。


4-当在破解软件的时候如果某些条件下达成了一些状态,也就是突破了某些限制的时候,往往程序自身会根据开发时的规划重新设置当前自身状态,比如重新绘制窗口("ResetToolbars","Settings")。


5-在编写汇编程序时要注意十六进制数不能以字母开头,如果原始数是以字母开头,要在前面加上0,否则在编译的时候就不能被识别出 来,如果不是以字母开头则不作改变,并以H/h结尾表示该数是十六进制数。同理,打补丁修改成的时候,单独的十六进制数如果是字母,就需要在前面加个0。


6-对话框从类型上分为两类:modal(模态对话框)和非模态(modeless)对话框。他们之间的区别在于是否允许用户在不同窗口间进行切换,模态对话框不允许,而非模态对话框允。

创建模态对话框是由调用DiaLogBoxParam()函数实现,而创建非模态对话框是调用CreateDiaLogParam()函数实现的。


7-RegOpenKeyEx()函数的作用是打开一个注册表的键值(注册表是widows提供的一个数据库,让普通的程序软件把自己的版本信息,完成进度,环境变量,是否注册等信息写到里面),打开之后如果函数返回值为0,说明成功的打开了一个键值,这个操作类似C语言的main函数返回0表示正常。


8-RegQueryValueEx()函数通常与RegOpenKeyEx()函数搭配使用,它的作用是在RegOpenKeyEx()打开的键值中找到一个键名,并把这个键名的值传出来,存放到数据缓冲区里。比如二者搭配起来就可以检测程序在注册表里是否被注册。