去除Neg窗口(警告窗口)

3种常用的方法 :修改程序的资源,静态分析以及动态分析、使用资源修改工具去除警告窗口。

显示窗口的常用函数有MessageBoxA(W)、MessageBoxExA(W)、DialogBoxParamA(W)、ShowWindow、CreateWindowExA等等。

 可以尝试利用消息设置断点进行拦截。、

看到这个neg窗口是用DialogBox函数来显示的  

0040104D  /$  8B4424 04     mov eax,dword ptr ss:[esp+0x4]
00401051  |.  6A 00         push 0x0                                 ; /lParam = NULL
00401053  |.  68 C4104000   push Nag.004010C4                        ; |DlgProc = Nag.004010C4
00401058  |.  6A 00         push 0x0                                 ; |hOwner = NULL
0040105A  |.  6A 79         push 0x79                                ; |pTemplate = 0x79
0040105C  |.  50            push eax                                 ; |hInst = C3338846
0040105D  |.  A3 9C114000   mov dword ptr ds:[0x40119C],eax          ; |
00401062  |.  FF15 10104000 call dword ptr ds:[<&USER32.DialogBoxPar>; \DialogBoxParamA
00401068  |.  33C0          xor eax,eax
0040106A  \.  C2 1000       retn 0x10

 

neg窗口的反汇编代码

0x79=121

DialogBoxPraram函数一般和EndDialog函数配对使用,前者用于打开对话框,后者关闭对话框。

参数:

hlnstance:标识一个模块的实例,该模块的可执行文件含有对话框模板。

IpTemplateName:标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模扳名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零,且低位字一定含有标识符。一定用MAKEINTRESOURCE宏指令创建此值。

hWndParent:指定拥有对话框的窗口。

IpDialogFunc:指向对话框过程的指针。有关更详细的关于对话框过程的信息,请参见DialogProc

dwInitParam:指定传递到对话框过程中的 WM_INITDIALOG 消息 IParam 参数的值。

上面代码的DialogProc为40100C4

004010C4   .  8B4424 08            mov eax,dword ptr ss:[esp+0x8]                        ;  kernel32.BaseThreadInitThunk
004010C8   .  2D 10010000          sub eax,0x110                                         ;  Switch (cases 110..111)
004010CD   .  74 34                je short Nag.00401103
004010CF   .  48                   dec eax
004010D0   .  75 2D                jnz short Nag.004010FF
004010D2   .  8B4424 0C            mov eax,dword ptr ss:[esp+0xC]                        ;  Case 111 of switch 004010C8
004010D6   .  48                   dec eax
004010D7   .  75 26                jnz short Nag.004010FF
004010D9   .  6A 00                push 0x0                                              ; /Result = 0x0
004010DB   .  FF7424 08            push dword ptr ss:[esp+0x8]                           ; |hWnd = 74558460
004010DF   .  FF15 18104000        call dword ptr ds:[<&USER32.EndDialog>]               ; \EndDialog
004010E5   .  6A 00                push 0x0                                              ; /lParam = NULL
004010E7   .  68 09114000          push Nag.00401109                                     ; |DlgProc = Nag.00401109
004010EC   .  6A 00                push 0x0                                              ; |hOwner = NULL
004010EE   .  6A 65                push 0x65                                             ; |pTemplate = 0x65
004010F0   .  6A 00                push 0x0                                              ; |/pModule = NULL
004010F2   .  FF15 00104000        call dword ptr ds:[<&KERNEL32.GetModuleHandleA>]      ; |\GetModuleHandleA
004010F8   .  50                   push eax                                              ; |hInst = C3338846
004010F9   .  FF15 10104000        call dword ptr ds:[<&USER32.DialogBoxParamA>]         ; \DialogBoxParamA

可见4010DF为EndDialog  设法从开头跳转到4010DF可关闭对话框

小总结:DialogBoxPraram函数一般和EndDialog函数配对使用,前者用于打开对话框,后者关闭对话框。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值