内嵌补丁

逆向工程核心原理--->内嵌补丁

参考:https://blog.csdn.net/ski_12/article/details/80670045

一 分析程序



1.1


此处循环,是对4010F5~401248的区域解密,对每一个字符和0x44异或。继续跟踪进入4010BD。

1.2


跟进4010BD函数后,发现两个循环。第一个仍然是对401007地址处的区域解密,循环7F次,所以是401007~401085的每一个字符和0x7异或。

第二个仍然是对4010F5~401248区域解密,每个字符和0x11异或。说明这4010F5~401248区域被加密了两次,所以此处解密两次。

1.3


继续往下分析,进入401039地址处的函数。上来就是一个循环,是对4010F5区域的字符的值,没每个字节,加到edx里面。然后到下面和0x31EB8DB比较。如果被修改过,直接跳向错误的地方。在401083处有一个跳向OEP的跳转。

1.4



来到OEP之后因为被解密过后的代码会被视为数据,而不是指令,所以我们需要点分析代码,就变为正常的代码了。开头就是GetModuleHandle,获取一个应用程序或动态链接库的模块句柄。只有在当前进程的场景中,这个句柄才会有效。说明下面一个DialogBoxParmA的四个参数(IpDialogFunc:指向对话框过程的指针

)是4010F5。跟踪到之后发现那些我们要修改的字符串了。

二 内嵌补丁

由上述分析可知,实际要打补丁的字符串都保存在经过两次加密的区域。

整个的操作过程为:先在文件适合的位置插入洞穴代码,该补丁代码更改字符串并通过JMP指令跳转至OEP处,再在004010F5~00401248区域将JMP OEP指令修改为JMP补丁代码。

当补丁代码较少时,使用第一种方法即在文件空白的区域插入补丁代码。

2.1

首先查看.text段的大小。

可以看到,第一节区的在磁盘文件的大小为400,映射到内存的大小为280,即第一节区从磁盘文件加载到内存后有大小为180(RAW 680~800区域 > RVA 1280~1400区域)的区域并未使用,该区域为空白区域(NULL-Padding),可以用来填写补丁代码。另外需要注意的是,1E4的属性值中添加的IMAGE_SCN_MEM_WRITE(可写属性),在程序进行解码操作时,必须在该节区头添加可写属性以获得相应内存的可写权限,否则会引发非法访问的异常。对于一个普通的PE文件,其代码节是无写权限的,但是压缩工具、Crypter等文件的代码节都有可写权限。

注意,内存中的节区大小为280,但实际节区的内存大小并非280,而是以Section Alignment的整数倍扩展,即实际大小为1000。


2.2

首先写洞穴代码,最后记得跳转到OEP处。



在跳向补丁代码的地方,因为此处的代码为和0x7解密之后的。即 E9 F8 01应该是我们修改经过解密之后的值,那解密之前呢?因为一个数的两次异或会回到本身。所以

E9 xor 7= EE  F8 xor 7= FF  01 xor 7= 6

则EE FF 6 即为解密前的数据,所以我们应该修改此值。

2.3

首先是保存洞穴代码,复制到可执行文件,退出OD。在十六进制编辑器中修改上面的数据。

而文件中实际的加密形态为(VA 00401083 > RVA 1083 > RAW 483):

在此483处我们看到我们在上一步修改的值了,这个E9 F8 01 我们已经知道是解密后的,


所以修改为 EE FF 6 ,然后保存文件。


2.4  运行查看效果。



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 六,滨海的自由与煎熬(一) 临港天津大学滨海研究院是初成立不久的研究生院,我们科赛光电是在李祥高...
    袁鸿驰阅读 210评论 0 0
  • 今天我们抽红包了。老师拿出红包来,让这次假期作业完成的好的同学先来抽,完成不好的同学后抽,刚来了一个新同学也先...
    闫昱颖阅读 177评论 0 0
  • 曾经在我掌心写写画画的小手,被我紧紧握着,不肯放,却开始失去温度。 清澈见底的眼眸渐渐涣散,曾令我心神荡漾的颜色消...
    CC_黎阳阅读 264评论 0 4
  • 2014年12月12日双12这一天,一个很普通平常的日子,也是我离开重庆到云南红河哈尼族彝族自治州弥勒市工作4个月...
    奔跑滴石头阅读 304评论 0 0
  • 其實在所有的文化體系中,只有中國人是不敬鬼神的。 你一定覺得很詫異—這怎麼可能?每天有那麼多人燒香拜佛、求神問道,...
    pemachocuo阅读 198评论 0 2