首页
社区
课程
招聘
[旧帖] [求助]一个程序通过逆向工程后,可以直接修改其功能吗 0.00雪花
发表于: 2009-11-3 03:00 1229

[旧帖] [求助]一个程序通过逆向工程后,可以直接修改其功能吗 0.00雪花

2009-11-3 03:00
1229
请教高人了,一个菜鸟问题,一个程序通过逆向工程后,可以直接修改其功能吗,

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
2
恩 可以修改的
2009-11-3 17:11
0
雪    币: 72
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
#include <windows.h>
WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
{
        MessageBox(NULL,"no virus","ERROR",MB_OK);
        SwapMouseButton(1);
        ExitProcess(NULL);
}

比如这段简单的代码,只有三个函数,楼主可以查一下MSDN,就知道各个函数的用法了。

00401000  push    0                                      ; /Style = MB_OK|MB_APPLMODAL
00401002  push    0040603C                                          ; |Title = "ERROR"
00401007  push    00406030                                           ; |Text = "no virus"
0040100C  push    0                                                         ; |hOwner = NULL
0040100E  call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
00401014  push    1                                                         ; /Swap = TRUE
00401016 call    dword ptr [<&USER32.SwapMouseBut>; \SwapMouseButton
0040101C  push    0                                                        ; /ExitCode = 0
0040101E  call    dword ptr [<&KERNEL32.ExitProces>   ; \ExitProcess

这个就是OD的反汇编代码(逆向,可没有这么简单,只为举例,所以截取了部分)。

SwapMouseButton(1);   就说这个函数个功能,是交换鼠标左右键,LZ可以在VC6下编译试验一下。

这是个布尔型的函数,所以,只要将1(T),换成0(F),就可以达到换回鼠标左右键的功能。

不知道我说的,清楚不。

在说一个吧。还有一个最简单的MessageBox函数。
有4个参数,第一个我就不说了。
现在我代码中的参数,显示出来的对话框,标题ERROR,内容no virus,显示方式只有一个选项的OK按钮。

现在你想修改,显示的模式。

就说一下修改标题好了。
00401002  push    0040603C                                          ; |Title = "ERROR"
在内存的0040603C处,存放了ERROR的ASC码,我将这里面的ASC码修改成5个 41,之后保存文件。在测试,发现标题换掉了。成为AAAAA。

还有最后一个参数, 额,说起来不是很好说。
#define MB_OK                       0x00000000L
#define MB_OKCANCEL                 0x00000001L
#define MB_ABORTRETRYIGNORE         0x00000002L
#define MB_YESNOCANCEL              0x00000003L
#define MB_YESNO                    0x00000004L
#define MB_RETRYCANCEL              0x00000005L
看着个吧,希望你能理解。

00401000  push    0                                      ; /Style = MB_OK
这句,不是PUSH 0,
你修改成 push 4h。
保存后会发现很惊奇的事情。呵呵。

好了,一个很简单的东西基本完成了。对于GUI界面的,还有更好玩的。
希望LZ能满意。

我估计你运行上述程序,会使你的鼠标左右键连续切换,有点小崩溃的。
2009-11-4 00:43
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好久没上线了,最近来顶下看雪论坛
2009-11-4 16:02
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
3楼那算是一个例子吧
只改了一个标题
要想修改多一点就要麻烦很多了
2009-11-5 01:03
0
雪    币: 80
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
应该可以吧。
2009-11-5 01:22
0
游客
登录 | 注册 方可回帖
返回
//