修改软件加密标题
本帖最后由 菜鸟中的菜鸟 于 2014-10-7 21:44 编辑打开VS2010,写个自测试MFC,用加密函数加密一下
char* CabcdeDlg::Decrypt(char* s,WORD k)//解密函数
{
char *p = NULL;
for(int i=0;i<strlen(s);i++)
{
s = s^123;
s -= k;
}
p = s;
return p;
}
char* CabcdeDlg::Enjcrypt(char *s, WORD k)//加密函数
{
char *p = NULL;
for (int i=0; i<strlen(s); i++)
{
s +=k;
s = s^123;
}
p = s;
return p;
}
void CabcdeDlg::Init()
{
char s[] = "蓯稑";
char* pResult = Decrypt(s,1);
SetWindowText(pResult);
}
在MFC初始化函数加调用Init(); 对话框为如下:
https://www.52hb.com/data/attachment/forum/201410/07/203406tvm9etjv333we8cb.png
注:因为在WIN7下基址会变化,这里测试编译器基址不变。为方便OD处理。设置编译器如下:
https://www.52hb.com/data/attachment/forum/201410/07/203552y2t2l2zldlxlrr0t.jpg
下面开始修改软件加密标题。OD载入abcde.exe。下SetWindowTextA断点。bp SetWindowTextA, 运行程序,调用堆栈如下:
https://www.52hb.com/data/attachment/forum/201410/07/203912iv5dvagff0aldocj.png
这里反汇编窗口中跟随,找到调用的位置,如下:
https://www.52hb.com/data/attachment/forum/201410/07/204121z5qhthqg203f0hri.png
说明是在MFC100.DLL里调用的,在RETN 0x4下断,重新截入,运行,断在这里,F8运行,目的是回到调用这个函数的程序领空里,
回到调用处,在段首下断,跟踪,如下:
https://www.52hb.com/data/attachment/forum/201410/07/204540ip1n7q7tpkajsuou.jpg
在00401890处可以看到, 经加密过的最后解密后把字符串放到edx里了,这里可以直接把edx里的值想法改掉就行了。因为空间比较小,
所以在空白区域写,右键,查找字符串,里面输入一串00,点确定,就到了空白区域处。 在这里找个位置写入。
https://www.52hb.com/data/attachment/forum/201410/07/204954qzuaxgu7ydygnx7x.png 这里就从004027EE开始,把上面改成JMP到这个地址处,如下:
https://www.52hb.com/data/attachment/forum/201410/07/205129m4fftec94jffs39t.jpg 所以现在要在004027EE处写代码了。这里自定义标题,所以可以
mov edx,"自定义的字符串", 再调用setwindowtexta设置新的字符串,之后再跳到原来的地址处,顺序执行。如下:
先把这个保存成abcde_1.exe,再次截入OD,余下的就是在00404910处写入自定义的
字符串了,如下图:
https://www.52hb.com/data/attachment/forum/201410/07/205654y4imugtfv84stnlu.png 9.png (5.83 KB, 下载次数: 0)
下载附件
半小时前 上传
现在已经写入成功了,省下的就是保存了,保存为abcde_2, 修改成功。
如下图:
https://www.52hb.com/data/attachment/forum/201410/07/205845y088nl7pnm88f07f.jpg
这里只是一种方法,方法很多,好处是不用管算法,还有一种暴力的方法,也是patch的,重新写setwindowtext,覆盖掉原来的,也行。
MFC测试程序下载:
请上传附件,并且@我,来置顶 Crack杰 发表于 2014-10-7 21:42
请上传附件,并且@我,来置顶
已上传!谢谢各位了。 {:5_116:}支持一下 新手学习的一个好机会。希望看到楼主更多的精彩教程! 很经典的改法,顶了! 战股神 发表于 2014-10-9 21:51
很经典的改法,顶了!
大神来个暴力,犀利的改法吧。。。。。求方法求思路。 我叉。我很早就在找这教程了。谢谢了楼主了!
大神,如果直接把“lea edx,dword ptr ss:”改成“mov edx,dowrd ptr ss:”
然后在“00404910”处编辑好新的标题,这样能成立吗?
原来这么做,明白了