发表于 2015-10-23 13:50

申请会员ID:BingFeng【未报到,已注销】

申请标题:申请会员ID:BingFeng
1、申 请 I D :BingFeng
2、个人邮箱:402024633@qq.com
3、原创技术文章:
Assembly-CSharp.dll解密

第一部分
在libmono.so的mono_image_open_from_data_with_name
顺藤摸瓜找到 mono_image_open_from_data_with_name_0

http://note.youdao.com/yws/api/group/6831983/noteresource/8143E21F03CC4C63BF8CF5D3FAACCF52/version/88?method=get-resource&shareToken=8D60F3716EF6457CB86CA97FF95B07E4&entryId=53827697

把 mono_image_open_from_data_with_name_0第一条指令,改成无限循环(用winhex)


003DE1F8F0 47 2D E9--> FEFFFFEA


并在IDA中事先下好如上图中一样的断点,


然后运行游戏,用IDA挂在目标,


并按F9运行


之后打开断点列表,

http://note.youdao.com/yws/api/group/6831983/noteresource/9DFDB456FCB04702BF482C6CC48C4E60/version/89?method=get-resource&shareToken=8D60F3716EF6457CB86CA97FF95B07E4&entryId=53827697




双击断点,这样就能快速来到函数 mono_image_open_from_data_with_name_0处


来到 mono_image_open_from_data_with_name_0(003DE1F8 )第二条指令,无限循环处,,


在IDA中修改内存,



把mono_image_open_from_data_with_name_0第一条指令的无限循环 还原回去,


003DE1F8FE FF FF EA    -->F0 47 2D E9   



之后,反复多次的按F9运行,


mono_image_open_from_data_with_name_0的第一个参数的r0,代表着目标buffer,第二个参数r1代表着buffer的大小



在第一次断点触发暂停后,程序停在了mono_image_open_from_data_with_name_0的第二条指令,跟人r0所指向的内存,如果是MZ开头的,


那么就不用关心本次解密,


如果不是MZ开头的,再按一下F9,程序会在第二个断点处断下,此时解密完成,


用ida脚本dump下来,即可


第二部分
dump下来之后还需要完成修复
http://note.youdao.com/yws/api/group/6831983/noteresource/BB9B55ED0E5A4B28BCBEF87D17ED506C/version/93?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698


其实就是IMAGE_DATA_DIRECTORY    MetaData;

中的第一个字段lSignature结构不是'BSJB'造成的






-----------------------------------------------------------
快速定位:
把目标dll拖入LoadPE
http://note.youdao.com/yws/api/group/6831983/noteresource/7BF0A69DB5554753B0714D78D220F328/version/95?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698


记录下MetaData的数值


MetaData                      0x001A7558 0x001C752C


0x001A7m

0x001C752C是MetaData结构的大小



点击“区段”记录下pe的区段信息
http://note.youdao.com/yws/api/group/6831983/noteresource/67AEDD4FC30E42669F7AC7138645E455/version/91?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698


.text
00002000
0036CA84
00000200
0036CC00

发现MetaData在内存中的RVA(0x001A7558)落在.text段




根据.text段信息计算,MetaData数据在文件中的偏移:001A7558-00002000+00000200=1A5758




用winhex打开目标dll


来到1A5758偏移处,修改数据为:'BSJB'


如下图


http://note.youdao.com/yws/api/group/6831983/noteresource/855B675D30D548B2844725EE8279BBC9/version/92?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698

保存后,IDA已经识别。

http://note.youdao.com/yws/api/group/6831983/noteresource/2452BF7F0F2740EC9179B551264714E8/version/94?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698


Hmily 发表于 2015-11-1 22:03

ID:BingFeng
邮箱:402024633@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登录后可以把文章整理下发到移动安全区,谢谢。

Hmily 发表于 2024-6-6 15:39

未报到,已注销。
页: [1]
查看完整版本: 申请会员ID:BingFeng【未报到,已注销】