====================================================================
简单ReverseMe过程
====================================================================
前言:
首先说明的是,这个是以前的有人分析过,但是好像不完整
开始简单ReverseMe之前一定要PE文件机构认真的看看,熟悉一些常识。
那你就可以开始本篇简单的逆向了(好像不能说叫逆向),反正就是
和破解有一点不同了,对不知道的人就是新知识,我本人也是一个小
小的菜鸟,有一点心得不敢独享,就发出本篇烂文
==================================
==================================
主文:
看看程序就是叫你添加一个提示框,和使一个EXIT按钮起作用,看起来
不难嘛,其实真的不难。
用LORDPE查看区段如下:
Name VOffset VSize ROffset RSize Flags
.text 00001000 0000008A 00000400 00000200 60000020
.rdata 00002000 000000DC 00000600 00000200 40000040
.data 00003000 0000003C 00000800 00000200 C0000040
.rsrc 00004000 00000198 00000A00 00000200 C0000040
我们看到.text空间还有0x200-0x8A=0x176,足够我们用了
由于我们要在OD里添加,所以汇编代码:
00401000 > 6A 00 PUSH 0
00401002 E8 6B000000 CALL <JMP.&KERNEL32.GetModuleHandleA> ;模块
00401007 |. A3 38304000 MOV DWORD PTR DS:[403038],EAX ;下面创建窗口
0040100C |. 6A 00 PUSH 0 ; /lParam = NULL
0040100E |. 68 29104000 PUSH rm1.00401029 ; |DlgProc = rm1.00401029
00401013 |. 6A 00 PUSH 0 ; |hOwner = NULL
00401015 |. 6A 01 PUSH 1 ; |pTemplate = 1
00401017 |. FF35 38304000 PUSH DWORD PTR DS:[403038] ; |hInst = NULL
0040101D |. E8 56000000 CALL <JMP.&USER32.DialogBoxParamA> ; /DialogBoxParamA
00401022 |. 6A 00 PUSH 0 ; /ExitCode = 0
00401024 /. E8 43000000 CALL <JMP.&KERNEL32.ExitProcess> ; /ExitProcess
00401029 /. 55 PUSH EBP
004010
简单ReverseMe过程
====================================================================
前言:
首先说明的是,这个是以前的有人分析过,但是好像不完整
开始简单ReverseMe之前一定要PE文件机构认真的看看,熟悉一些常识。
那你就可以开始本篇简单的逆向了(好像不能说叫逆向),反正就是
和破解有一点不同了,对不知道的人就是新知识,我本人也是一个小
小的菜鸟,有一点心得不敢独享,就发出本篇烂文
==================================
==================================
主文:
看看程序就是叫你添加一个提示框,和使一个EXIT按钮起作用,看起来
不难嘛,其实真的不难。
用LORDPE查看区段如下:
Name VOffset VSize ROffset RSize Flags
.text 00001000 0000008A 00000400 00000200 60000020
.rdata 00002000 000000DC 00000600 00000200 40000040
.data 00003000 0000003C 00000800 00000200 C0000040
.rsrc 00004000 00000198 00000A00 00000200 C0000040
我们看到.text空间还有0x200-0x8A=0x176,足够我们用了
由于我们要在OD里添加,所以汇编代码:
00401000 > 6A 00 PUSH 0
00401002 E8 6B000000 CALL <JMP.&KERNEL32.GetModuleHandleA> ;模块
00401007 |. A3 38304000 MOV DWORD PTR DS:[403038],EAX ;下面创建窗口
0040100C |. 6A 00 PUSH 0 ; /lParam = NULL
0040100E |. 68 29104000 PUSH rm1.00401029 ; |DlgProc = rm1.00401029
00401013 |. 6A 00 PUSH 0 ; |hOwner = NULL
00401015 |. 6A 01 PUSH 1 ; |pTemplate = 1
00401017 |. FF35 38304000 PUSH DWORD PTR DS:[403038] ; |hInst = NULL
0040101D |. E8 56000000 CALL <JMP.&USER32.DialogBoxParamA> ; /DialogBoxParamA
00401022 |. 6A 00 PUSH 0 ; /ExitCode = 0
00401024 /. E8 43000000 CALL <JMP.&KERNEL32.ExitProcess> ; /ExitProcess
00401029 /. 55 PUSH EBP
004010