-
-
[原创]2019看雪CTF 晋级赛Q2 第七题:部落冲突(01-去除反调试) by 心学
-
发表于:
2019-6-27 14:59
6933
-
[原创]2019看雪CTF 晋级赛Q2 第七题:部落冲突(01-去除反调试) by 心学
4、阻止加密:sub_4CE064,强制返回0:
关键在SH_LYD:004CE093 C6 45 FF 01:将其修改为
C6 45 FF 00;使得程序强制返回0。避免后面的一个异或加密
5、避免掉坑:004D0CF4(实际拷贝到004010D0),不予执行 Int 2E
软件会将
004D0CF4拷贝到
004010D0处,拷贝前会先异或0x55自己。
那么为了使得解密后拷贝的代码为9090,那么就需要将存在软件内的代码改为C5C5
原始文件:
CD2E对应于987B; 那么987B
→C5C5
工具:IDA
目的:去除反调试、以便于IDA能静态分析源码
一、去除主要流程:
1、Patch:SH_LYD:004CE670-SH_LYD:004CE675:909090909090
2、Patch:SH_LYD:004CE6FB-SH_LYD:004CE700:
909090909090
3、Patch: SH_LYD:004CE0AF:9090
4、阻止加密:SH_LYD:004CE096:00
5、避免掉坑:SH_LYD:004D0CFF-SH_LYD:004D0D00:C5C5
相关的IDA代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | static main( void )
{
auto code1,code2,code3,code4,code5,i;
code1 = 0x004CE670;
code2 = 0x004CE6FB;
code3 = 0x004CE0AF;
code4 = 0x004CE096;
code5 = 0x004D0CFF;
for ( i = 0; i < 6 ; i ++ )
{
PatchByte(code1 + i,0x90);PatchByte(code2 + i,0x90);
}
PatchByte(code3,0x90);PatchByte(code3+1,0x90);
PatchByte(code4,0x00);
PatchByte(code5,0xC5);PatchByte(code5+1,0xC5);
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | static main( void )
{
auto code1,code2,code3,code4,code5,i;
code1 = 0x004CE670;
code2 = 0x004CE6FB;
code3 = 0x004CE0AF;
code4 = 0x004CE096;
code5 = 0x004D0CFF;
for ( i = 0; i < 6 ; i ++ )
{
PatchByte(code1 + i,0x90);PatchByte(code2 + i,0x90);
}
PatchByte(code3,0x90);PatchByte(code3+1,0x90);
PatchByte(code4,0x00);
PatchByte(code5,0xC5);PatchByte(code5+1,0xC5);
}
|
二、主要源代码分析过程(流程):1、Patch:CheckRemoteDebuggerPresent
二、主要源代码分析过程(流程):1、Patch:CheckRemoteDebuggerPresent
[注意]看雪招聘,专注安全领域的专业人才平台!
最后于 2019-6-28 11:28
被kanxue编辑
,原因: