lordpe

时间:2024-05-29 10:22:46编辑:coo君

程序输入表的问题.

1 个附件
我自己用MFC写了一个程序(附件内),用来研究一下MFC程序的输入表信息,但是遇到一些问题:
用16进制编辑器打开程序
(1)3C偏移处的值为:00010000(0100h)
(2)数据目录中输入表的指针在PE文件头80偏移处.0100h + 80h = 180h
(3)转道180h看输入表指针.0C2A0000(2a0ch)
(4)用LordPE看程序的Section信息:
名称 V偏移 V大小 R偏移 R大小 标志
.rdata 00002000 00001094 00001400 00001200 40000040
发现磁盘偏移和内存偏移不相等,计算差值:VRK = 2000h - 1400h = c00h
后面要用到.
(5)前面(3)里面计算得到的输入表指针的内存偏移地址为:2a0ch
文件偏移 = 2a0ch - c00h = 1e0ch
(6)于是在1e0ch处寻找IMAGE_IMPORT_DESCRIPTOR数组
C42A0000 00000000 00000000 782D0000 40200000
EC2C0000 00000000 00000000 BC2D0000 68220000
8C2A0000 00000000 00000000 D42F0000 08200000
502D0000 00000000 00000000 68300000 CC220000
842A0000 00000000 00000000 74300000 00200000
00000000 00000000 00000000 00000000 00000000 // 结束
(7)把地址全部翻转过来减去差值VRK
1EC4 0000 0000 2178(MFC71.DLL) 1440
20ec 0000 0000 21bc(MSVCR71.dll) 1668
1e8c 0000 0000 23d4(KERNEL32.dll) 1408
2150 0000 0000 2468(USER32.dll) 16cc
1e84 0000 0000 2474(COMCTL32.dll) 1400
0000 0000 0000 0000 0000
(8)IMAGE_IMPORT_DESCRIPTOR数组结构
IMAGE_IMPORT_DESCRIPTOR
{
Union {
DWORD Characteristics;
PIMAGE_THUNK_DATA OriginalFirstThunk;
};
DWORD TimeDateStamp;
DWORD ForwarderChain;
DWORD Name;
PIMAGE_THUNK_DATA FirstThunk;
}
(9)下面是在第一个IID数组第一个字段偏移处取到的信息
7C080080 F2050080 87180080 DA0E0080 85180080 ....//后面很多不写了
问题来了~:
(1)每个双字的地址怎么不象书上写的0000结尾的呢?
(2)MFC写的的程序的输入表和一般WIN32写的输入表有没有区别啊?


输入表函数是什么,怎么改

重建输入表
常规壳(如UPX,北斗等),然后脱壳后修复时重建输入表

转移输入表函数『这次要讲的重点,具有代表性』*

加壳(最好是些猛壳之类的,如ASProtect等,这个很灵活,要多尝试!)

以上只是理论,要运用到实际上来还是有一定的差距,下面就利用第二种方法以一具体实例演示下,至于其它的两种呢,就留给大家自己研究吧!是的,这种方法很典型,所以本次屏幕录像就以它为重点讲解并演示。希望大家能掌握好!

首先让瑞星来查杀下,可以看到,瑞星是查杀的(提示信息为黑客工具,我们忽略)。
为了节省时间,特征码在做录像之前我已经定位好了(相信大家都会定位特征码吧)。特征处如下:

00001EAE 『目标程序是s扫描器,一款命令行下使用的扫描器,很强大!』

说下本次演示使用到的工具:

C32ASM,Lordpe,计算器(就这三样)

具体步骤:

A.使用C32ASM打开目标程序,找到特征处的输入表函数,复制下函数名(并把此处函数名用90填充掉),记录下起始地址,找到移动地址(我们把这个输入表函数向空白处移动『一般往下移动』,尽量移动远 点,这里我们移动到最底部。)。把这个输入表函数GetProcAddress名复制到移动处后,另存一份文件为exe.exe。

(注意:GetProcAddress就是这个输入表函数,不能修改字符大小写的,得转移下。)

B.使用计算器计算移动的大小,注意是16进制计算:(看C32ASM底部提示)移动『十进制』->334字节
『十六进制』->14E

用瑞星查杀看看,是不被杀的,但是不能运行,看错误提示,那是输入表函数没处理好的结果!

C.使用Lordpe打开目标程序exe.exe,找到目录,导入表,找到第一个动态链接库,修改第二个输入表函数的 ThunkVaule,右键编辑就行。
原来Thunk值:0001C0A0。而我们把这个函数向下移动了14E(十六进制)字节,那么应该加上计算下

0001C0A0+14E=1C1EE则Thunk值变为:1C1EE。编辑进去!填写上API名称,即是那输入表函数名:
GetProcAddress。保存下就OK了。


我在win7下用lordpe为什么读不到所有进程

不是所有的后台程序都可以由用户处理的,因为要考虑到操作系统的安全性和稳定性。一些系统进程你可以看到,但绝不能对其操作。
如果是自己的应用程序,就要考虑是否有其他保护机制在控制,诸如一些病毒就是用A进程保护B进程,你关闭B进程后,A会自动再启动B进程。但是A进程又被写入系统进程,就导致一般用户不能对付这个病毒。只能使用第三方软件来处理(比如杀毒软件)


ollydbg载入文件无法启动是怎么回事

有些程序加了反调试,会制造SHE异常,请在异常选项中忽略所有异常,SHIFT+F9运行试试,如果还不行,用strongOD插件隐藏OD再调试,再不行换OD试试。有时候强壳会严格检测程序的运行环境,如果发现调试器的存在或者发现不是在正常系统中运行,就会拒绝释放程序代码并调用异常反调试功能进行拦截保护。制造卡机死机现象,只是其中一个小手断。到论坛去升级OD隐藏插件,然后再重新调试。


上一篇:吉祥娃娃梨

下一篇:天天养生 深圳卫视