Entrar    Registrar
Loading

[Tutorial] Portando funções da Lib

Estudo de elfs, patches e desenvolvimento de ferramentas para os mesmos.
  • Autor
    Mensagem

[Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 16/10/2010 - 18:15

Base do tutorial: http://www.se-developers.net/viewtopic.php?f=38&t=147

Ferramentas necessárias:
- Smelter (Anexo)
- IDA Pro 5.0.0.879 (4shared)
- Duas firmwares da mesma plataforma (4shared/livesony)
- CXC Loader* (http://justdanpo.cheb.ru/data/projects/ ... cxcldr.rar)
*Somente para telefones A2(o cxc loader que é somente para platafomas A2, e não o tutorial).
Coloque o cxc loader na pasta loaders do IDA.

Neste tutorial vou ensinar a portar funções da lib, e utilizarei a firmware do W995 R1HA035 e do C510 R1HA035, como são telefones da plataforma A2, precisamos extrair os arquivos da main(.mbn) com o read3150(http://justdanpo.cheb.ru/data/projects/ ... 50_0.7.rar) e utilizar o phone_app.cxc, vou portar a função:
Código: Selecionar todos
;W995 R1HA035
0F2C: 00000000 B1A11614 ; 3CB: void OSE_GetShell( void** pInterface );

para o C510 R1HA035(é somente mera coincidência o nome das firmwares).

1) Primeiro abra o IDA:
Clique em Go
01.jpg
Clique em Open e abra o arquivo da firmware no seu computador(não esqueça de selecionar All Files em 'Files of type'.
2.jpg
Escolha o tipo de processador Arm processors: ARM710a(1), e clique em Set(2).
3.jpg

Clique em Processor options(1), e marque 'Disable pointer dereferencing(2). Clique ok e ok.Cancele as janelas de "Generate list of strings".
4.jpg

Vá em Options > General, e mude Number of Opcode Bytes para 4.
5.jpg
Depois Options > Setup Data Types, Deixe marcada somente a opção 3.
6.jpg
Depois aperte Alt+G, e mude Value de ROM pra 1.
7.jpg

Agora temos que inverter o endereço(little endian), no nosso caso é: B1A11614.
Separe em duplas, B1 A1 16 14, e pegue de trás pra frente, 14 16 A1 B1, esse é o endereço que devemos procurar no IDA, 1416A1B1.

No IDA, aperte G(Jump to Address), e cole o endereço 1416A1B1.
Para visualizar o código no endereço, aperte C, caso dê erro (Comand "MakeCode" failed) desça um endereço e tente novamente até conseguir, caso queira fechar o código aperte U.
8.jpg

Agora abra a firmware do C510 com o Smelter, no nosso caso o phone_app.cxc.
Com a janela do IDA ao fundo, abra o Smelter e clique no B.
9.jpg

Digite os bytes do endereço, e preste atenção, aonde tem loc_XXXXXXXX, sub_XXXXXXXX, dword_XXXXXXXX, substitua por ????.
10.jpg

No nosso exemplo temos: 0168 041C 0029 ???? 0B68 081C DD68. Sem os espaços, cole esses dados no Smelter, de ok.
11.jpg

Caso ele encontre mais de uma ocorrência, aumente o numéro de bytes copiados.
Caso não encontre tente com bytes de outra parte do endereço(a função é toda a parte em vermelho mostrada no IDA junto com as setas de referência), nem todas as funções são fáceis de encontrar.
No Smelter, clique na ocorrência e aperte F5.
14.jpg

Agora abra a firmware do C510 no IDA, siga os mesmos procedimentos para abrir a do W995.
Aperte Alt+B, e cole os bytes copiados do smelter.
12.jpg

Aperte C para abrir o endereço, e certifique-se que as funções são iguais nas duas firmwares, com exceção dos loc,sub,dword.
Agora preste atenção nesta parte, se na primeira firmware, você desceu UM endereço para abrir a função, na segunda firmware você deve subir UM endereço e copiá-lo.
No nosso caso nós descemos um endereço na firmware do W995, então devemos copiar o endereço acima da função do C510, 1415EC45.
13.jpg

Agora inverta os bytes, 14 15 EC 45 = 45EC1514, e pronto.
Tente começar com funções que já foram portadas e compare se você obteve êxito, e experimente firmwares da mesma plataforma, é mais complicado portar funções de plataformas diferentes.
Para outras plataformas, o procedimento é o mesmo, o que muda é a forma de abrir a firmware com o IDA, você deve utilizar uma firmware no formato .raw (main2raw), e apos setar o processador ARM710a, e as opções do processador, o IDA irá abrir outra janela,
Imagem
No caso de DB2020, o ROM Start Address é 0x44140000 e ROM size é 0x01DC0001.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor GikCell » 10/03/2011 - 11:47

Nesse caso então é possível portar funções de uma versão de fw para o mesmo aparelho, certo? Por exemplo, meu C510 está com a R1DA035 e quero colocar funções da R1HA035, é possível com esse método, correto, já que é um "copia e cola" de uma para a outra.
Vc julga ser um sacríficio mt grande entregar tudo a Cristo? Então se pergunte: "O que entregou Cristo por mim"? [Ellen G. White].
Resp: A vida!!
Não respondo dúvidas por MP. Poste no forum!
Avatar do usuário
GikCell
SE Friend
SE Friend
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 6218
Registrado em: 11/01/2010 - 17:38
Localização: Macaé - RJ
Aparelho: Xperia Play

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 11:49

Sim mas não vejo muito sentido já que não existem nem patches nem elfpack pra essa firmware.
Portar funções da lib é muito simples, é só um jogo de gato e rato, você só precisa encontrar o caminho na outra firmware.
Só fazendo uma correção ao que você disse, as funções existem nos aparelhos, a lib é só um mapa das funções entende? Elas estão lá só resta saber aonde hehehe.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor GikCell » 10/03/2011 - 11:54

Estou perguntando, pois essa última versão de fw deu mt problema pra mim. Inclusive quando coloquei essa versão meu aparelho misteriosamente passou de BROWN para RED. Não sei como isso, pois tinha feito a conversão na época do Aerix que era free.

Sim mas não vejo muito sentido já que não existem nem patches nem elfpack pra essa firmware.


Não entendi qual é da parada então. Esse tuto não é para porta funções para que a fw fique habilitada para receber funções de uma outra versão de fw? Fiquei confuso na parada então! :duvida
Vc julga ser um sacríficio mt grande entregar tudo a Cristo? Então se pergunte: "O que entregou Cristo por mim"? [Ellen G. White].
Resp: A vida!!
Não respondo dúvidas por MP. Poste no forum!
Avatar do usuário
GikCell
SE Friend
SE Friend
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 6218
Registrado em: 11/01/2010 - 17:38
Localização: Macaé - RJ
Aparelho: Xperia Play

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 12:11

Foi mal eu editei o post e talvez você não tenha visto
Só fazendo uma correção ao que você disse, as funções existem nos aparelhos, a lib é só um mapa das funções entende? Elas estão lá só resta saber aonde hehehe.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor GikCell » 10/03/2011 - 12:15

Acho que entendi, mas então, eu teria que ter uma fw que tenha patches criados para ela, já que as funções estão nos aparelhos?

Para descobrir essas funções é só através de assembly né?

:edit

Eu quiz dizer ter uma fw instalada no aparelho que tenha os patches criados para essa versão. Por exemplo eu não posso portar essas funções para uma R1DA035? Esse bagulho está meio confuso pra mim.

:edit

Eu estou entendendo que eu poderia passar as funções de uma versão de fw para outra versão. Não é isso? Se não for foi mal!!
Vc julga ser um sacríficio mt grande entregar tudo a Cristo? Então se pergunte: "O que entregou Cristo por mim"? [Ellen G. White].
Resp: A vida!!
Não respondo dúvidas por MP. Poste no forum!
Avatar do usuário
GikCell
SE Friend
SE Friend
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 6218
Registrado em: 11/01/2010 - 17:38
Localização: Macaé - RJ
Aparelho: Xperia Play

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 12:23

Não, as funções existem em todos os aparelhos, a questão é saber em qual endereço da firmware elas se encontram, por isso você pega o código dela em uma firmware em que você sabe o endereço e procura o código parecido para a firmware que você quer portar.
Assim, endereço da função GIK na firmware X: 0x14556688+1
Vou la nesse endereço, pego o código e uso um programa que procura o código pra mim na firmware Y, ele me retorna o endereço e pronto. Portei a função. Entende? É só um mapeamento das funções, você não está inserindo ou modificando nada na firmware ao fazer isso, só está encontrando a função.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor GikCell » 10/03/2011 - 12:26

Entendi qual é. Para que essa função funcione vou precisar do patch, que habilita essa função na fw, correto?
Vc julga ser um sacríficio mt grande entregar tudo a Cristo? Então se pergunte: "O que entregou Cristo por mim"? [Ellen G. White].
Resp: A vida!!
Não respondo dúvidas por MP. Poste no forum!
Avatar do usuário
GikCell
SE Friend
SE Friend
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 6218
Registrado em: 11/01/2010 - 17:38
Localização: Macaé - RJ
Aparelho: Xperia Play

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 12:31

Gik não entendi a sua pergunta, pode tentar explicar melhor?
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor GikCell » 10/03/2011 - 12:33

Cara, acho melhor deixar pra lá. Eu li o tutorial e vou reler. Qualquer coisa pergunto denovo. :tchau
Vc julga ser um sacríficio mt grande entregar tudo a Cristo? Então se pergunte: "O que entregou Cristo por mim"? [Ellen G. White].
Resp: A vida!!
Não respondo dúvidas por MP. Poste no forum!
Avatar do usuário
GikCell
SE Friend
SE Friend
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 6218
Registrado em: 11/01/2010 - 17:38
Localização: Macaé - RJ
Aparelho: Xperia Play

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 12:36

Pode perguntar sem problemas.
Não sei se é isso, mas vou tentar explicar. O intuito de portar uma função da lib é que elfs que usem aquela função funcionem entende?
Os elfs funcionam assim, eles usam as funções que existem na nossa firmware, mas os loaders precisam saber o endereço dessas funções, e eles sabem pelo arquivo da lib.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor Alexsander » 10/03/2011 - 20:53

Acho que entendi ... quando eu porto a função na lib, é pro elf usar essa função que já existe em uma certa firmware e que não está ativada?
''O mundo está passando e assim tambêm o seu desejo, mais aquele que faz a vontade de Deus, permanece para sempre!!'' 1joão 2:17

Smart Evolution Brasil: Vamos abraçar essa causa Juntos, Sempre!!
Avatar do usuário
Alexsander
Usuário Expert
Usuário Expert
 
Anos no fórum: 6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação
Posts: 424
Registrado em: 14/08/2010 - 19:34
Localização: Itaúna. Minas Gerais
Aparelho: W580i,W580, Xpéria X10 mini

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 21:49

Não cara, a função existe, ela está la paradinha na firmware. A lib serve pra dizer a localização exata da função.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor Alexsander » 10/03/2011 - 22:00

só pra mim entender melhor: quais seriam essas funções? por favor, cita ai uma função usada por alguma elf que pode ser ativada por esse processo! :ops
Amanha eu vejo a resposta! Minha net, como já foi dito antes, tá como sempre: Ruin demais!

Qui Mar 10, 2011 10:05 pm :edit

só pra mim entender melhor: quais seriam essas funções? por favor, cita ai uma função usada por alguma elf que pode ser ativada por esse processo! :ops
Amanha eu vejo a resposta! Minha net, como já foi dito antes, tá como sempre: Ruin demais!
''O mundo está passando e assim tambêm o seu desejo, mais aquele que faz a vontade de Deus, permanece para sempre!!'' 1joão 2:17

Smart Evolution Brasil: Vamos abraçar essa causa Juntos, Sempre!!
Avatar do usuário
Alexsander
Usuário Expert
Usuário Expert
 
Anos no fórum: 6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação
Posts: 424
Registrado em: 14/08/2010 - 19:34
Localização: Itaúna. Minas Gerais
Aparelho: W580i,W580, Xpéria X10 mini

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 10/03/2011 - 22:28

Cara abre qualquer arquivo de lib.vkp de um aparelho que você vai entender melhor.
La estão os endereços revertidos.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor Alexsander » 13/03/2011 - 20:10

Cara, abri a lib e ví os endereços das funções...
Pelo que eu entendi, a lib, é uma portadora de funções na fw, certo?
E todas essas funções, tem um endereço diferente, claro!
Portar funções na lib, desculpe se eu estiver errado, seria ativar uma função que não foi ativada pela lib? :medo
''O mundo está passando e assim tambêm o seu desejo, mais aquele que faz a vontade de Deus, permanece para sempre!!'' 1joão 2:17

Smart Evolution Brasil: Vamos abraçar essa causa Juntos, Sempre!!
Avatar do usuário
Alexsander
Usuário Expert
Usuário Expert
 
Anos no fórum: 6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação
Posts: 424
Registrado em: 14/08/2010 - 19:34
Localização: Itaúna. Minas Gerais
Aparelho: W580i,W580, Xpéria X10 mini

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 13/03/2011 - 22:26

Cara espero que voce tenha lido tudo com muita calma.
No tutorial acima peguei a função: "void OSE_GetShell( void** pInterface );" da library do W995.
Alguma boa alma fez o favor de encontrar e definir o endereço dessa função para o W995.
Aí eu fui como uma boa pessoa e encontrei aonde ela se escondia para o C510.
Cara a firmware do aparelho já existem todas as funções que o celular precisa pra funcionar. Elas estão lá
Alguem fez o favor de programar tudo direitinho e pronto. O que nós fazemos é encontrar essas funções para que possamos
usá-las nos elfs também. Entende?
Não sei qual sentido você está dando pra palavra ativar mas não é o correto. Ativar significa tornar operante algo que estivesse desligado, ou algo parecido. E não é o caso, as funções estão sendo usadas pelo aparelho ele sabe quando chamar cada uma pois a equipe da Sony Ericsson programou tudo.
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Re: [Tutorial] Portando funções da Lib

Mensagempor Alexsander » 14/03/2011 - 01:16

Sim, eu sei que a função tá lá, mais eu pensava que a gente teria que "Ativar" ela pra que ela funcionasse!
Agora tá tudo explicado!Desculpa a ignorância! :envergonhado
Valeu! :piscar
''O mundo está passando e assim tambêm o seu desejo, mais aquele que faz a vontade de Deus, permanece para sempre!!'' 1joão 2:17

Smart Evolution Brasil: Vamos abraçar essa causa Juntos, Sempre!!
Avatar do usuário
Alexsander
Usuário Expert
Usuário Expert
 
Anos no fórum: 6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação6 anos de participação
Posts: 424
Registrado em: 14/08/2010 - 19:34
Localização: Itaúna. Minas Gerais
Aparelho: W580i,W580, Xpéria X10 mini

Re: [Tutorial] Portando funções da Lib

Mensagempor tRaDuZ » 14/03/2011 - 01:47

Qualquer duvida posta, sei lá as vezes eu ja estou acostumado e acho facil mas pra voce nao é entao pode perguntar mil vezes sem problemas ^^

03.14.2011 - 00:47 :edit

Qualquer duvida posta, sei lá as vezes eu ja estou acostumado e acho facil mas pra voce nao é entao pode perguntar mil vezes sem problemas ^^
Avatar do usuário
tRaDuZ
Administrador
Administrador
 
Anos no fórum: 7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação7 anos de participação
Posts: 5062
Registrado em: 30/12/2009 - 22:20
Localização: char Location="RJ"
Aparelho: Galaxy S3

Voltar para Desenvolvimento & Pesquisa

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron