Modchip 板


LINE

欢迎转载 请注明转自:WWW.PSPer.NET PSP玩家网 近日,PSP技术玩家组放出ChickHEN 破解程序反编译代码,有兴趣研究和觉得有用的玩家 可以参考一下。 TIFF图片中隐藏的代码: 以下为引用的内容: # libTIFF Exploit by MaTiaZ, modified by Team Typhoon # Eggcode in TIFF, disassembled and commented # Any new information or questions: http://advancedpsp.freeforums.org -- CHICKHEN程序开始-- # I初始化 00000000: a0 <- 0x04400000 00000004: a1 <- 0x047a0000 -- 添零 -- # Fills with zeros the memory segment between (a0) and (a1) 00000008: w(a0) <- 0 0000000c: a0 <- a0 + 4 00000010: if a0 <> a1 then pc <- pc - 8 (ZERO_FILLING) # Saves in s0 current pc value, which is EGG_START + 0x20 # This is done because we don't know at which memory address # the egg is loaded, and we need to know to reference data # s0 = EGG_START + 0x20 00000018: pc <- pc + 0x8; ra <- pc + 8 00000020: s0 <- ra # a0 = (EGG_START + 0x20) + OFFSET_MODULE_NAME_WANTED = STRING_POINTER # PUNTERO CADENA points to "scePaf_Module\0" 00000024: a0 <- s0 + 0x0508 # 更多的初始化操作 # v1 and s2 looks like base segments # s3 looks like an offset # v1 = SCEPAF_MODULE_START # s2 = UNKNOWN_ADDRESS ¿? # s3 = OFFSET_MODULE_NAME 00000028: v1 <- 0x08810000 00000030: s2 <- 0x09ea0c46 00000038: s3 <- 0x0015f3ac -- 处理模块未发现情况 -- # t0 = MODULE_NAME_POINTER # t1 = STRING_POINTER 0000003c: t0 <- v1 + s3 00000040: t1 <- a0 -- 比较字符 -- # Compares two strings, pointed by t0 and t1 # Loads t2 with first/next character from MODULE_NAME_POINTER # Loads t2 with first/next character from STRING_POINTER # t0 = MODULE_NAME_POINTER # t1 = STRING_POINTER 00000044: t2 <- b(t0) 00000048: t3 <- b(t1) 0000004c: if t2 = t3 then pc <- pc + 0xc (SAME_CHARS) # If characters are different, then it's not the module we're searching for 00000054: pc <- pc + 0x1c 00000058: v0 <- 1 (DECISION) -- 字符相同的情况-- # If we character is NULL, then we've reached the end of the string # so the strings are equal # Go to DECISION 0000005c: if t2 = 0 then pc <- pc + 14; v0 <- 0 (DECISION) # If not, compare next character 00000064: t0 <- t0 + 1 00000068: pc <- pc - 0x24 0000006c: t1 <- t1 + 1 (COMPARE_CHARS) -- DECISION -- # If v0 = 0, we found the module # If v0 = 1, we didn't found the module # v1 = SCEPAF_MODULE_START # s0 = EGG_START + 0x20 # s3 = OFFSET_MODULE_NAME # If we found it, go to MODULE_FOUND with s3 = SCEPAF_MODULE_START 00000070: if v0 = 0 then pc <- pc + 0x20; s3 <- v1 (MODULE_FOUND) # If not, SCEPAF_MODULE_START++ 00000078: v1 <- v1 + 1 0000007c: if v1 < s0 then t0 <- 1, else t0 <- 0 # If we reach the egg, go to MODULE_FOUND with s3 = 0 00000080: if t0 = 0 then pc <- pc + 0x10; s3 <- 0 (MODULE_FOUND) # If we haven't found the module, try again with v1 + 1 00000088: pc <- pc - 0x4c (MODULE_NOT_FOUND) -- 处理模块发现的情况-- # s3 = SCEPAF_MODULE_START # Let's consider this piece of code as if the module was found # t0 = SCEPAF_MODULE_START + OFFSET_1 = DATA_POINTER_1 00000094: t0 <- 0x40138c30 00000098: t0 <- s3 + t0 # t1 = SCEPAF_MODULE_START + OFFSET_2 = DATA_POINTER_2 000000a0: t1 <- 0x000d74c0 000000a4: t1 <- s3 + t1 # Copy two words (8 bytes) from DATA_POINTER_2 to DATA_POINTER_1 000000a8: t2 <- w(t1) 000000ac: w(t0) <- t2 000000b0: t2 <- w(t1+4) 000000b4: w(t0+4) <- t2 # t0 = SCEPAF_MODULE_START + OFFSET_3 = FUNCTION_1 000000bc: t0 <- 0x0015ee90 000000c0: t0 <- s3 + t0 # Call FUNCTION_1(1) 000000c4: ra <- pc + 8; pc <- t0 000000c8: a0 <- 1 # Kernel_Library_5F10D406 # sceKernelCpuResumeIntr # Resume interruptions # Ignores FUNCTION_1() return value # t0 = SCEPAF_MODULE_START + OFFSET_4 = FUNCTION_2 000000d0: t0 <- 0x0015ee70 000000d4: t0 <- t0 + s3 # a0 = (EGG_START + 0x20) + OFFSET_RUTA_H.BIN = PATH_POINTER # PATH_POINTER points to "ms0:/h.bin\0" 000000d8: a0 <- s0 + 0x4f8 000000dc: a1 <- 0x00000801 000000e0: ra <- pc + 8; pc <- t0 000000e4: a2 <- 0x000001ff # Call FUNCTION_2(PATH_POINTER,0x0801,0x01ff) # I suppose FUNCTION_2 is fopen() (sceIoOpen) # IoFileMgrForUser_109F50BC # sceIoOpen # FUNCTION_2() returns file descriptor # v0 = FILE_DESCRIPTOR # t0 = SCEPAF_MODULE_START + OFFSET_5 = FUNCTION_3 000000ec: t0 <- 0x0015ee58 000000f0: t0 <- t0 + s3 # Pass FILE_DESCRIPTOR to FUNCTION_3 # a0,s2 = FILE_DESCRIPTOR 000000f4: s2 <- v0 000000f8: a0 <- s2 # Looks like number of bytes to copy: 65 KB # a2 = NUMBER_BYTES 000000fc: a2 <- 0x00010000 00000100: ra <- pc + 8; pc <- t0 # Looks like destination buffer # a1 = DIRECCION_BUFFER # Bit 30 = 1 -> real address: 0x08800000 uncached 00000104: a1 <- 0x48800000 # FUNCTION_3(FILE_DESCRIPTOR,DIRECCION_BUFFER,NUMBER_BYTES) # I suppose FUNCTION_3 is read() (sceIoRead) # IoFileMgrForUser_6A638D83 # sceIoRead # Ignoring FUNCTION_3() return value # t0 = SCEPAF_MODULE_START + OFFSET_6 = FUNCTION_4 0000010c: t0 <- 0x0015ee60 00000110: t0 <- s3 + t0 00000114: ra <- pc + 8; pc <- t0 00000118: a0 <- s2 # FUNCTION_4(FILE_DESCRIPTOR) # IoFileMgrForUser_810C4BC3 # sceIoClose 0000011c: pc <- 0x08800000 00000120: a0 <- s3 # Jump to loaded code # Passing it SCEPAF_MODULE_START in a0 -- 进入战国时代..?? http://www.psper.net/psp/M33/05232FZ2009.html --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.47.223.27
1F:推 angusyu:哪国语言.. -_- 05/24 01:18
2F:推 phylliss:战国时代… 05/24 01:27
3F:推 biblecross:只有学过8学分的程式设计看这个有点困难 05/24 01:37
4F:推 linmondi:有看没有懂~有请高手帮忙一下 05/24 01:48
5F:推 Splash5:一般人不用看懂这个.. 当然这对有心踏入的人很有帮助 05/24 02:06
6F:→ Splash5:老手应该不会等这份文件出来才去trace.. XDD.. 05/24 02:07
7F:→ Splash5:战国时代? 我只能说 有心要作的人早作了 大多人还是 05/24 02:08
8F:→ Splash5:都等现成的居多 :ppp 05/24 02:08
9F:推 kovenkoven:刚好在修系统程式XD 05/24 02:12
10F:推 Splash5:给有心入门的人.. 白算盘拿出来看多少有点帮助XDD 05/24 02:13
11F:→ Splash5:MIPS组语跟cpu架构弄熟 再去网路上找psp硬体架构 05/24 02:14
12F:推 clarklove:虽然我组语有pass,可是也看得超辛苦= = 05/24 03:25
13F:推 Modchip:嗯,果然毕业十年真的会看不懂XD 05/24 04:21
14F:推 supermousess:这在完全没学过的人眼中看来完全是火星文 05/24 06:25
15F:推 menspower:ps2dev网站也有不少资料...还有toolchain可用:P 05/24 09:07
16F:推 menspower:意思应该是说有人把ChickHEN的Binary code反组译成... 05/24 09:10
17F:→ menspower:MIPS assembly code(因为PSP的CPU是MIPS...) 05/24 09:11
18F:→ menspower:如果有高手有兴趣要作什麽的话...可以参考这段code... 05/24 09:12
19F:推 menspower:因为人类(Programmer)没办法直接看binary code做事... 05/24 09:15
20F:→ menspower:尼欧除外:P (The Matrix) 05/24 09:17
21F:推 Eior:突然觉得 我计组跟组语还算是没有白修.... 05/24 10:20
22F:推 jonas:https://www.youtube.com/watch?v=yL_-1d9OSdk 05/24 10:55
23F:→ jonas:CHICKEN CHICKEN CHICKEN...... 05/24 10:56
24F:推 htstj:哈哈哈哈!!!!楼上大笑!好怀念的seminar!!! 05/24 11:06
25F:推 final01:有没有英文版的论坛阿 都看不懂~它在说明啥 05/24 11:59
26F:推 final01:XD 搞错原来它论坛也有英文版 05/24 12:02
27F:推 ILoveHer:po code在这边 有什麽意义吗 如果是新闻 就po link吧 05/24 17:50
28F:推 fly9588:觉得有意义的就觉得有意义吧,觉得没意义的就...? 05/24 18:01
29F:→ final01:H.bin的asm也可po一下吧 xd 05/24 19:21
30F:推 littlecut:我只看的董部份〒△〒 05/25 15:07







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP