针对加密后的字符串如何修改的一个小示例(图解)

呵呵,没有深入研究过,只是做一个简单的示例,让大家一起讨论方便!
示例的程序与工程见附件!!!

原程序运行如图:

大家先结合一下源码看一下:
[codes=cpp]
#define IAWEN_TIMER_ID   0x101
HINSTANCE  g_hInst;
INT_PTR  CALLBACK MainPro(HWND,UINT,WPARAM,LPARAM);
char szTitle[]=”ufa2r9fWxLvKvsD9LS1pYXdlbigyMDA5LzA4LzIwKQ==”;//用Base64加密后的标题

标题是用Base64工具事先加密过的,用OD搜索到的也只能是加密后的结果:

第一种方法:[color=#FF0000]先分析加密方法,然后将自己的字符也加密一下,这样就可以直接替换了[/color]!
由于这里知道是Base64加密的,所以,如果我们需要修改成自己的标题,只需要将自己的用Base64加密一下,然后替换,如下图:

保存一份,运行一下看看:

第二种方法:就是直接在程序里打补丁了(SMC)
1\先分析程序在哪里设置的标题:

2\仔细分析一下,就知道了下面这句代码是关键

00401109     8D5424 04              lea edx,dword ptr ss:[esp+4]

esp+4就是指向解密后的字符串位置
指令执行后,则将解密后的字符串保存到了EDX,然后压入堆栈!

3\接下来,我们就需要在数据段找一个空白,输入自己的字符串,然后想办法让地址保存到EDX就OK了:

其他的,如果有想到再续吧!

发表评论