OllyDbg 使用教程 (四)


 

参考

书:《加密与解密》

视频:小甲鱼 解密系列 视频

 

RegisterMe程序下载地址:http://pan.baidu.com/s/1gd3l4XH

 

这个RegisterMe程序,运行前和运行后都会有neg窗口。破解目标,去除这个两个窗口。

 

 

用OD直接打开这个程序,我们会发现出错。也可能OD会卡死。

 

因为这个程序的PE文件被故意修改了。

 

我们先到 选项---> 调试设置 --> 事件 --> 选择系统断点。

 

图片1

 

这样用OD打开就不会卡死。

 

 

按 alt + M 来到 memory界面,你可以看到“PE文件头”。注意是地址00开头的,如果是7xx看到的,那些PE文件头是dll的。

 

图片2

 

 

但这个PE文件头 大小是5000,一般情况是1000。所以肯定有问题,双击它,查看PE文件头。

 

 

来到PE文件头,我们可以看到有很多地方数字被故意设置的很大,所以我们会调试出错。

 

图片3

 

SizeOfCode = 40000400 太大了,选中右键点击修改整数,改成400。

SizeOfInitializedData = 40000A00 也太大了,改成A00

BaseOfCode = 40001000 也太大了,一般都是1000,改成1000 。

BaseOfData = 40002000 也太大了,改成2000

NumberOfRvaAndSizes = 40000004 也太大了,这个值一般都是10

这个程序没有输出,没有输出表,所以

Export Table address = 500000  改成 0

Export Table size = 50000 改成 0

 

改好后,在这个页面我们是保存不了的,记住我们修改的地方是从 00400DC 开始到0040013C。

按Ctrl+C 切换到CPU窗口,在数据面板按Ctrl+G 输入00400DC,选中我们修改的地方 右键 复制到可执行文件,在弹出的窗口中右键选择  备份-->保存数据到文件即可



在调试选项中把设置第一次暂停 改回 WinMAin。再用OD打开修改后的程序,运行就正常了。

 

要去掉这个程序的两个neg窗口方法有好多种:

 

第一种:

 

直接把弹出窗口的全代码改成nop。方法是选中代码,右键-->二进制-->用nop填充,即可

 

第二种:

看MessageBox的函数说明,第一个参数hWnd,表示MessageBox的父窗口。

 

 

int MessageBox(

    HWND hWnd,	// handle of owner window
    LPCTSTR lpText,	// address of text in message box
    LPCTSTR lpCaption,	// address of title of message box  
    UINT uType 	// style of message box
   );


我们可以把这个参数改成一个非法的句柄,让MessageBox运行出错。例如

 

我们可以把下面代码中的push 0 改成 push 1,MessageBox就不会显示了

 

00401039  |.  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
0040103B  |.  68 7D304000   push    0040307D                         ; |Title = "Register Me"
00401040  |.  68 89304000   push    00403089                         ; |Text = "Oops! I am not registered !!"
00401045  |.  6A 00         push    0                                ; |hOwner = NULL
00401047  |.  E8 9E010000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA

 

 

 

 

 

 

 

 

 

 

 


 

 

  • gcs123

    评论: 為什麼数据面板是空白的 按ctrl +g 搜尋00400DC 出現指定位址沒有記憶體

    2015-11-01 21:23:02          回复