今天的课件都无壳。
一 Delphi和BC++
DIE检测一下,是Delphi
OD载入
反汇编窗口右键---查找---二进制字符串
查看一下特征码
复制Delphi的特征码,粘贴进刚才打开的查找二进制的窗口
点击确定返回反汇编窗口。查看一下找到的第一个特征码
一般情况下,找到特征码对应的会是一个跳转,而跳转下面如果有一个CALL就说明是我们要找的,F2下断点。
如果跳转下面没有CALL就CTRL+L跳过,继续寻找下一个
(应对较大的程序可以直接用脚本搜索下断)
找到所有的搜索结果,并下好断点后,F9运行程序,输入假码,点击注册,程序会被断下来。
这个就是Delephi的按钮事件。
接下来就是F7依次进入设置断点的CALL里去寻找关键代码了。
二 VB
DIE看一下信息
载入OD,查找--二进制字符串,输入“816C24 ”
点确定后,发现找到了四个结果和结果下面的四个JMP。
依次下断。
F8单步,就进入了按钮事件的代码段。
三 MFC
DIE查看一下
发现识别出的语言是VC++,不是MFC
载入OD看一下到底是什么语言编写的
载入后,点击工具栏上的E按钮
有调用MFC42.DLL的就是MFC语言,正常的VC++是不会调用这个库的。
接下来在这一行双击回到反汇编窗口,右键---查找---命令,输入"sub eax,oa"
(VB比较特殊,这里查找的就不是二进制字符串了)
然后看一下查找的结果
然后跳到下一个特征码处,相同的方法继续找JE,回车跟随到跳转目的地找CALL
所有的特征码找一遍然后F9运行,依次进去检查下断点的CALL
四 易语言
OD载入,查找---二进制字符串,输入“FF25”,可以看到
(注意:这个FF25是易语言特征码,和下面的FF 55 FC 5F 5E不同,那是易语言按钮事件的特征码)
push 0x52010001 这一行未必每次都能出现,但下面的连续JUMP是一定会有的,视程序大小数量不同而已。
既然确定了是易语言,那就在“搜索二进制字符串”出输入易语言按钮事件的特征码“FF 55 FC 5F 5E”
五 VC++
回车跟到JE结尾处,下面会有一个CALL,在此处下断。
重新载入,F9运行,弹出的程序登录窗口任意输入假码注册,被OD断在刚才设置的断点处。F7进CALL
注意,此时并不是VC++程序的核心代码区域